Fout 1004 - Door de toepassing of door object gedefinieerde fout

Status
Niet open voor verdere reacties.

Jand66

Gebruiker
Lid geworden
7 jul 2010
Berichten
31
Hallo,

Ik ben nieuw op dit forum, dat wil zeggen als geregistreerde user. In het verleden dit forum meerdere malen bezocht om (met succes) problemen op te lossen. Van onderstaand probleem kan ik de fout echter niet achterhalen:

Code:
LastRow = Sheets("Compas1").UsedRange.Rows.Count
  Filter = ModVerwFilters.FilterAan
  CurRow = 2
  
    For Each cell In Worksheets("Compas1").Range(Cells(2, 1), Cells(LastRow, 1))
    'For Each cell In Worksheets("Compas1").Range("A2:A194")

De fout wordt veroorzaakt door de regel "For Each ...". LastRow is een integer en heeft de waarde 194.
Als ik van deze regel commentaar maak en de 2e regel "For each ..." gebruik, dan doet de code het wel.

Weet iemand waardoor deze foutmelding wordt veroorzaakt??

Gr, Jan
 
Hallo Jan,
Het heeft met verwijzing te maken

Code:
Worksheets("Compas1").Range("A2:A194")
verwijst naar sheet "compas1", bereik A2:194

Code:
 Worksheets("Compas1").Range(Cells(2, 1), Cells(LastRow, 1))
hier verwijs je naar blad "compas1" , maar je geeft in je Range object niet aan dat je naar Cells(x,x) op blad "Compas1" verwijst
Er treedt dan een fout 1004 wanneer je deze macro runt terwijl een ander blad dan "compas1" actief is.

je kunt dit bijvoorbeeld op onderstaande manier oplossen
1:
Code:
    For Each cell In Worksheets("Compas1").Range(Worksheets("Compas1").Range("A" & 2), Worksheets("Compas1").Range("A" & LastRow))
    'For Each cell In Worksheets("Compas1").Range(Worksheets("Compas1").Cells(2, 1), Worksheets("Compas1").Cells(LastRow, 1))
    'LOOP
    Next

2:
Code:
   With Worksheets("Compas1")
        For Each cell In .Range(.Range("A" & 2), .Range("A" & LastRow))
        'LOOP
        Next
  End With

Methode 2 oogt wat netter, maar persoonlijk gebruik ik meestal methode 1.
Bijvoorbeeld wanneer je binnen een loop een andere with statement wilt gebruiken.
 
Laatst bewerkt:
Code:
 For Each cell In Worksheets("Compas1").Range("A2:A" & LastRow)
of
Code:
For Each cell In Worksheets("Compas1").Range("A2:A" & Sheets("Compas1").cells(rows.count,1).end(xlup).row)
 
Laatst bewerkt:
Heren,

Helaas kon ik dit niet eerder dan vandaag oppakken. Ik heb jullie oplossingen verwerkt in de code en deze doet nu wat het moet doen.

Dank voor de snelle reacties. :d

Groet,
Jan:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan