Hallo Allemaal,
Ik heb een stukje code geschreven om relevante dataregels van één tabblad te kopieren naar een ander tabblad. Wat betreft Excel VBA is mijn kennisniveau nog vrij beperkt.
Wat ik tot nu toe gemaakt heb werkt prima met een For loop. Echter gebruik ik liever een Do While loop. De code moet uiteindelijk per tabblad (12 in totaal) namelijk doorlopen tot regel 999 indien het tabblad helemaal vol staat met data maar ik wil dat de loop stopt wanneer er zo'n 20x achter elkaar door een lege cel geloopt wordt om hem wat sneller en efficienter te maken.
Wanneer ik de For loop vervang door een do While loop gaat het echter mis en blijft Excel hangen. Is er hier sprake van een onbedoelde infinite loop of kan het ook iets anders zijn?
De variabele StopLoop eindigt in mijn testvoorbeeld met For Loop op waarde 76 wanneer ik de For loop tot regel 100 laat doorlopen, dus daar lijkt het niet aan te liggen.
Hieronder het voorbeeld met de Do While loop.
Alvast bedankt voor het meedenken
Groeten,
Rawry
Ik heb een stukje code geschreven om relevante dataregels van één tabblad te kopieren naar een ander tabblad. Wat betreft Excel VBA is mijn kennisniveau nog vrij beperkt.
Wat ik tot nu toe gemaakt heb werkt prima met een For loop. Echter gebruik ik liever een Do While loop. De code moet uiteindelijk per tabblad (12 in totaal) namelijk doorlopen tot regel 999 indien het tabblad helemaal vol staat met data maar ik wil dat de loop stopt wanneer er zo'n 20x achter elkaar door een lege cel geloopt wordt om hem wat sneller en efficienter te maken.
Wanneer ik de For loop vervang door een do While loop gaat het echter mis en blijft Excel hangen. Is er hier sprake van een onbedoelde infinite loop of kan het ook iets anders zijn?
De variabele StopLoop eindigt in mijn testvoorbeeld met For Loop op waarde 76 wanneer ik de For loop tot regel 100 laat doorlopen, dus daar lijkt het niet aan te liggen.
Hieronder het voorbeeld met de Do While loop.
Alvast bedankt voor het meedenken
Groeten,
Rawry
Code:
Sub overzichtGenerator()
'Deze variabelen geven de rij weer waar data geplakt moet worden (kan efficienter, ik weet het)
Dim PasteRowNumber As Integer
PasteRowNumber = "6"
Dim PasteRowLetter As String
PasteRowLetter = "A"
Dim PasteRow As String
PasteRow = PasteRowLetter & PasteRowNumber
'De Sheet waaruit data gehaald wordt, dit worden er meer
Sheets("Jan").Activate
'De variabelen die bepalen wanneer de loop stopt
Dim SelectionCellRow As Integer
SelectionCellRow = "5"
Dim StopLoop As Integer
StopLoop = "1"
Do While StopLoop < 20 And SelectionCellRow < 99
ActiveSheet.Cells(SelectionCellRow, 4).Select
If ActiveCell = "" Then
StopLoop = StopLoop + 1
Else: StopLoop = "1"
End If
If Selection.Value = Sheets("Kaart").Range("A3") Then
ActiveCell.Offset(, -3).Resize(, 9).Select
Selection.Copy (Sheets("Kaart").Range(PasteRow))
PasteRowNumber = PasteRowNumber + 1
PasteRow = PasteRowLetter & PasteRowNumber
SelectionCellRow = SelectionCellRow + 1
End If
Loop
End Sub
Laatst bewerkt: