Hallo,
Ik heb nu een relatief simpele (ik heb nu net een week of twee ervaring met VBA) for loop geschreven die uit een range op het tabblad "Aggregatie input" een cel kopieert en plakt op het "Rekenblad". Deze cel dient als input voor verschillende formules. De uitkomsten hiervan kopieert en plakt de code vervolgens onder elkaar op het tabblad "Aggregatie complex". Af en toe gaat er echter iets mis, de identifier (de waarde die gekopieerd wordt uit de input sheet) wordt wel keurig gekopieerd en geplakt, maar de uitkomsten van de formules worden niet altijd gekopieerd, waardoor dus de waardes die bij de vorige identifier horen worden geplakt. Ik kan er geen andere reden voor verzinnen dan dat de server waarop ik werk het rekenwerk niet aankan en het daardoor misloopt, mijns inziens zit er niets geks in de for loop namelijk. Verder vond ik een linkje waarin wordt geschreven over het optimaliseren van code door het copy/pasten naar het clipboard over te slaan. Als ik die code echter wil gebruiken dan krijg ik de foutmelding 424 dat er een object mist op deze regel:
of in mijn geval:
De code die ik gebruik staat hieronder. Mochten jullie iets weten over het efficienter laten lopen van de code (als dat mogelijk is) of een reden kunnen vinden waarom mijn code soms niet de goede regels kopieert, dan hoor ik dat graag
Ik heb nu een relatief simpele (ik heb nu net een week of twee ervaring met VBA) for loop geschreven die uit een range op het tabblad "Aggregatie input" een cel kopieert en plakt op het "Rekenblad". Deze cel dient als input voor verschillende formules. De uitkomsten hiervan kopieert en plakt de code vervolgens onder elkaar op het tabblad "Aggregatie complex". Af en toe gaat er echter iets mis, de identifier (de waarde die gekopieerd wordt uit de input sheet) wordt wel keurig gekopieerd en geplakt, maar de uitkomsten van de formules worden niet altijd gekopieerd, waardoor dus de waardes die bij de vorige identifier horen worden geplakt. Ik kan er geen andere reden voor verzinnen dan dat de server waarop ik werk het rekenwerk niet aankan en het daardoor misloopt, mijns inziens zit er niets geks in de for loop namelijk. Verder vond ik een linkje waarin wordt geschreven over het optimaliseren van code door het copy/pasten naar het clipboard over te slaan. Als ik die code echter wil gebruiken dan krijg ik de foutmelding 424 dat er een object mist op deze regel:
Code:
Sheet1.Range("A1:A200").Copy Destination:=Sheet2.Range("B1")
Code:
"Aggregatie input".Range(.Cells(i + 3, 2).Copy Destination:=Rekenblad.Range("B9")
De code die ik gebruik staat hieronder. Mochten jullie iets weten over het efficienter laten lopen van de code (als dat mogelijk is) of een reden kunnen vinden waarom mijn code soms niet de goede regels kopieert, dan hoor ik dat graag
Code:
'"Complexen doorberekenen" button
Sub Complex()
Application.ScreenUpdating = False
If MsgBox("Alle complexen worden doorgerekend, wilt u doorgaan?", vbYesNo) = vbNo Then Exit Sub
' Telling aantal complexen
Worksheets("Input").Select
Range("G6").Select
Selection.Copy
Range("F6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
Application.CutCopyMode = False
hoeveel = Sheets("Input").Range("F6").Value
' Iteratie complexen
Worksheets("Aggregatie input").Select
Cells(4, 2).Select
Selection.Copy
Sheets("Rekenblad").Select
Range("B9").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Rows("3:5").Select
Selection.Copy
Sheets("Aggregatie complex").Select
Range("A1").Name = "kopieerhier"
Range("kopieerhier").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("kopieerhier").Offset(2, 0).Name = "kopieerhier"
i = 2
For i = 2 To hoeveel
Worksheets("Aggregatie input").Select
Cells(i + 3, 2).Select
Selection.Copy
Sheets("Rekenblad").Select
Range("B9").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Rekenblad").Select
Rows("5:5").Select
Selection.Copy
Sheets("Aggregatie complex").Select
Range("kopieerhier").Offset(1, 0).Name = "kopieerhier"
Range("kopieerhier").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Next i
Worksheets("Output").Select
MsgBox ("Taak voltooid")
End Sub
Laatst bewerkt: