sandra1978
Gebruiker
- Lid geworden
- 21 feb 2011
- Berichten
- 64
Hallo,
Mijn VBA-code doet het volgende: (het gaat enkel over macro mcrmixlokalen)
- met for loop nakijken in kolom K of er cellen zijn die dezelfde waarde hebben als een cel uit de lijst van tabblad bereiken, kolom P. (Een for each, binnen een for loop)
- indien de waarde hetzelfde is, wordt de hele rij van kolom K, onderaan gekopieerd, de waarde in cel K wordt aangepast, naar de waarde die naast kolom P staat van het tabblad bereiken.
--> concreter: als het lokaal 1015A wordt teruggevonden, wordt deze lijn gekopieerd, en in de kolom K wordt de waarde 1015 ingevuld, dan wordt er nog een lijn gekopieerd, en wordt de waarde 2018 ingevuld. Stel dat er bij het tabblad bereiken nog een kolom is ingevuld, dan wordt er nog een lijn gekopieerd.
Deze code werkt.... traag soms, maar ze werkt.
Tot we opeens lijn 16467 kopiëren (dan zitten we al op lijn 36464 te kopiëren), dan zit het vast en krijg ik de foutmelding:
1004: door de toepassing of object gedefineerde fout'
Ik heb al getest om enkele 100-en lijnen over te slaan en verder te beginnen, maar nee, ik krijg dezelfde foutmelding. Ik kan er totaal niet aan uit.
Please help!
hier kan je het document vinden, ik hoop dat de link werkt
https://1drv.ms/x/s!AsIc6FiZ_zTXkiCTTLdB0ddDVOOH?e=OBQJfG
PS: dit is de versie waar ik het al heb laten draaien, dus de rijen onder de tabel, zijn de gekopieerde rijen
Mijn VBA-code doet het volgende: (het gaat enkel over macro mcrmixlokalen)
- met for loop nakijken in kolom K of er cellen zijn die dezelfde waarde hebben als een cel uit de lijst van tabblad bereiken, kolom P. (Een for each, binnen een for loop)
- indien de waarde hetzelfde is, wordt de hele rij van kolom K, onderaan gekopieerd, de waarde in cel K wordt aangepast, naar de waarde die naast kolom P staat van het tabblad bereiken.
--> concreter: als het lokaal 1015A wordt teruggevonden, wordt deze lijn gekopieerd, en in de kolom K wordt de waarde 1015 ingevuld, dan wordt er nog een lijn gekopieerd, en wordt de waarde 2018 ingevuld. Stel dat er bij het tabblad bereiken nog een kolom is ingevuld, dan wordt er nog een lijn gekopieerd.
Deze code werkt.... traag soms, maar ze werkt.
Tot we opeens lijn 16467 kopiëren (dan zitten we al op lijn 36464 te kopiëren), dan zit het vast en krijg ik de foutmelding:
1004: door de toepassing of object gedefineerde fout'
Ik heb al getest om enkele 100-en lijnen over te slaan en verder te beginnen, maar nee, ik krijg dezelfde foutmelding. Ik kan er totaal niet aan uit.
Please help!
Code:
Sub McrMixLokalen()
Dim brongegevens As Worksheet
Set brongegevens = ActiveSheet
Dim iLastRow As Long
Dim i As Long
iLastRow = Worksheets("brongegevens").Cells(Rows.Count, "k").End(xlUp).row
Dim mixlokaal As Variant
Dim lastrowlokaal As Long
lastrowlokaal = Worksheets("bereiken").Range("p2").End(xlDown).row
With Application
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
'kolom K van brongegevens: voor elke lijn nakijken of er een lokaal in staat dat in de lijst staat van mixlokalen. Indien zo: onderaan nieuwe rij toevoegen,
'15/9/2020: aangepast: in plaats van copy/paste: row.value = row.value, veel sneller
For i = 3 To iLastRow
For Each mixlokaal In Worksheets("bereiken").Range("p2", "p" & lastrowlokaal)
If Cells(i, "k").Value = mixlokaal.Value Then
'elke keer opnieuw laatste rij definiëren, anders wordt dit telkens overschreven
Dim ilastrow2 As Long
ilastrow2 = Worksheets("brongegevens").Cells(Rows.Count, "k").End(xlUp).row
Rows(ilastrow2 + 1).Value = Rows(i).Value
j = ilastrow2 + 1
Cells(j, "K").Value = mixlokaal.Offset(0, 1).Value
If mixlokaal.Offset(0, 2).Value <> "" Then
Rows(ilastrow2 + 2).Value = Rows(i).Value
j = ilastrow2 + 2
Cells(j, "K").Value = mixlokaal.Offset(0, 2).Value
End If
If mixlokaal.Offset(0, 3).Value <> "" Then
Rows(ilastrow2 + 3).Value = Rows(i).Value
j = ilastrow2 + 3
Cells(j, "K").Value = mixlokaal.Offset(0, 3).Value
End If
If mixlokaal.Offset(0, 4).Value <> "" Then
Rows(ilastrow2 + 4).Value = Rows(i).Value
j = ilastrow2 + 4
Cells(j, "K").Value = mixlokaal.Offset(0, 4).Value
End If
End If
Next mixlokaal
Next i
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
hier kan je het document vinden, ik hoop dat de link werkt
https://1drv.ms/x/s!AsIc6FiZ_zTXkiCTTLdB0ddDVOOH?e=OBQJfG
PS: dit is de versie waar ik het al heb laten draaien, dus de rijen onder de tabel, zijn de gekopieerde rijen
Laatst bewerkt: