Splitting sheets with VBA, but creates extra sheet

STEEL010

Board Regular
Joined
Dec 29, 2017
Messages
76
Hi There, Happy new year to all!

I'm trying to solve a problem that I have from a VAB code that I have found on the Internet.
its about splitting one sheet into multiple sheets. Code runs fine but every time it gives me a extra sheet that I don't want like ("sheet69"). Is this problem ready known by some people? please help,help is much appreciated.

hereby the code:

Code:
Private Sub CommandButton1_Click()
Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer

    vcol = 4
    Set ws = Sheets("Mastersheet")

    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:E100"
    titlerow = ws.Range(title).Cells(2).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"

    For i = 2 To lr
        On Error Resume Next
        If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
            ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
        End If
    Next

    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
        ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
        If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
            Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
        Else
            Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
        End If
        ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
        Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
End Sub

Greeting Steel010
 
Last edited by a moderator:

Excel Facts

Which lookup functions find a value equal or greater than the lookup value?
MATCH uses -1 to find larger value (lookup table must be sorted ZA). XLOOKUP uses 1 to find values greater and does not need to be sorted.
Assuming none of the sheets already exist try
Code:
Sub Steel010()
   Dim Cl As Range
   Dim ws As Worksheet
   Dim Ky As Variant
   
   Application.ScreenUpdating = False
   Set ws = Sheets("Mastersheet")
   With CreateObject("scripting.dictionary")
      For Each Cl In ws.Range("D2", ws.Range("D" & Rows.Count).End(xlUp).Offset(-1))
         If Not .Exists(Cl.Value) Then .Add Cl.Value, Nothing
      Next Cl
      For Each Ky In .Keys
         ws.Range("A1").AutoFilter 4, Ky
         Sheets.Add(, ws).Name = Ky
         ws.AutoFilter.Range.EntireRow.Copy Sheets(Ky).Range("A1")
         Sheets(Ky).Columns.AutoFit
      Next Ky
   End With
   ws.AutoFilterMode = False
   ws.Activate
End Sub
 
Upvote 0
Hi Fluff,

it works but Ky give error Ky="" I have formulas in Colum D, may this be the problem?
 
Upvote 0
Do you have "Blanks" in col D?
 
Upvote 0
Try
Code:
      For Each Cl In ws.Range("D2", ws.Range("D" & Rows.Count).End(xlUp).Offset(-1))
         If Not .Exists(Cl.Value)[COLOR=#ff0000] And Cl.Value <> "" [/COLOR]Then .Add Cl.Value, Nothing
      Next Cl
 
Upvote 0
What error do you get & what line is highlighted when you click Debug?

Also what sort of values do you have in col D?
 
Last edited:
Upvote 0

Forum statistics

Threads
1,215,261
Messages
6,123,943
Members
449,134
Latest member
NickWBA

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top