• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro: data opsplitsen in verschillende worksheets

Status
Niet open voor verdere reacties.

ESM1986

Nieuwe gebruiker
Lid geworden
17 jan 2017
Berichten
2
Hallo iedereen,

Kan iemand mij helpen met de volgende vraag ivm een marco in Excel. Ik probeer een worksheet op te splitsen in verschillende worksheets doormiddel van een macro, maar ik krijg de volgende error (zie bold en onderstreepte deel):

Code:
Sub parse_data()

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 = 1
Set ws = Sheet1
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
[B][U]title = 'A1:AH1'[/U][/B]
titlerow = ws.Range(title).Cells(1).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


Enig idee waar ik de fout maak bij het selecteren van de range?

Bedankt alvast!
 
Laatst bewerkt:
Graag de code opmaken met codetags; dit is zo niet te volgen (code selecteren en druk op # in het forumvenster bij geavanceerd).

Even voor dit probleem, want de code kan natuurlijk veel anders geschreven worden.
Code:
Range("A1:AH1").name = "Title"
titlerow = Range("Title").row

Maar dan komt het al.
Als je op voorhand weet dat de range("title") = range("a1:ah1"), dan weet je ook al dat 'titlerow'= 1.
Enz.


Plaats je document eens en schrijf erbij wat de bedoeling is.
 
Bedankt alvast voor de reactie, ik hen de code aangepast met codetags.
Omwille van de informatie wat het document bevat kan ik dit niet delen, maar grofweg bevat het 44 lijnen met op iedere lijn een persoon en daaraan gekoppeld wat zijn verkoop + groei + commissie is. Bedoeling is dat voor iedere persoon een afzonderlijke worksheet gecreëerd wordt (dus gebaseerd op naam van de persoon).

Ik vermeld er misschien best bij dat dit de 1ste x is dat ik met een marco werk en dat mijn vragen dus misschien nog overbodig kunnen zijn, excuses alvast hiervoor.
 
Laatst bewerkt:
Naast de opmerkingen van HSV is dit niet goed:
title = 'A1:AH1'

Dat moet dan zijn:
title = "A1:AH1"

Dus dubbele quotes in plaats van enkele.
 
Je kan de gegevens fictief maken en het bestand opslaan onder een nader naam en dan plaatsen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan