jonathan11
Gebruiker
- Lid geworden
- 19 apr 2017
- Berichten
- 8
Hoi
Ik ben bezig te leren om zelf macro’s te schrijven. Ik heb een vraag. Ik schreef onderstaande code in Module 1 in bijgevoegd bestand. De bedoeling is dat de macro het werklijstje in tabblad Naomi afboekt in het tabblad voorraad met de bronlijst, daar van de items uit tabblad Naomi de status te wijzigen naar ‘Done’. Ik had al begrepen dat je code met formules of verwijzingen naar meerdere tabbladen in de Visual Basic Studio moet plaatsen in een module, niet in een blad.
Probleem dat ik tegenkom is dat bijvoorbeeld de macro “Done_Naomi” blijft vastlopen op verwijzingen naar een range of cel met foutmelding “Fout 1004, fout tijdens uitvoering”, zelfs de meest eenvoudige verwijzing naar cel Q2 in tabblad Voorraad loopt vast. Ongeacht of ik het schrijf als Cells(2,17), Range(“Q2”), met of zonder object Workbook Workbook.Sheets(“Voorraad”)/Sheets(“Voorraad”). Nu loopt hij vast op de range in dit gedeelte:
With ThisWorkbook.Sheets("Voorraad").Cells(2, 17)
.FormulaR1C1 = "=Done"
.AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 17))
End WithBekijk bijlage Werkvoorraad.xlsm
Ik heb het idee dat ik vastloop omdat ik iets fundamenteels over het hoofd zie of niet weet. Kan iemand mij helpen erachter te komen waar ik iets verkeerd doe?
Alvast bedankt
Jonathan
Sub Done_Naomi()
'
' Done_Naomi Macro
'
' Sneltoets: Ctrl+uu
'
Dim Usedrows_Naomi As Integer
Dim Usedrows_voorraad As Integer
Dim Curr_employee As String
Dim rng As Range
Usedrows_Naomi = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Usedrows_voorraad = Sheets("Voorraad").Cells(Rows.Count, 2).End(xlUp).Row
Curr_employee = ActiveSheet.Name
With ActiveSheet.Cells(2, 11)
.Value = "Done"
.AutoFill destination:=ActiveSheet.Range(Cells(2, 11), Cells(Usedrows_Naomi, 11))
End With
With ThisWorkbook.Sheets("Voorraad").Cells(2, 17)
.FormulaR1C1 = "=Done"
.AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 17))
End With
With Cells(2, 18)
.FormulaR1C1 = "=Done_Naomi”
.AutoFill destination:=Sheets("voorraad").Range(Cells(2, 18), Cells(Usedrows_voorraad, 18))
End With
Sheets("Voorraad").Range("R2").FormulaR1C1 = "=Done_Naomi"
ThisWorkbook.Sheets("Voorraad").Cells(2, 17).Activate
ThisWorkbook.Sheets("Voorraad").Range(Cells(2, 17), Cells(Usedrows_voorraad, 18)).AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 18)), Type:=xlFillDefault
Sheets("Voorraad").Cells(2, 18).Activate
ActiveCell.AutoFill destination:=Range(Cells(2, 18), Cells(Usedrows_voorraad, 18)), Type:=xlFillDefault
Sheets("Voorraad").Range("Q:R").Copy
Sheets("Voorraad").Columns("P:Q").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Naomi").Columns("A:K").ClearContents
End Sub
Ik ben bezig te leren om zelf macro’s te schrijven. Ik heb een vraag. Ik schreef onderstaande code in Module 1 in bijgevoegd bestand. De bedoeling is dat de macro het werklijstje in tabblad Naomi afboekt in het tabblad voorraad met de bronlijst, daar van de items uit tabblad Naomi de status te wijzigen naar ‘Done’. Ik had al begrepen dat je code met formules of verwijzingen naar meerdere tabbladen in de Visual Basic Studio moet plaatsen in een module, niet in een blad.
Probleem dat ik tegenkom is dat bijvoorbeeld de macro “Done_Naomi” blijft vastlopen op verwijzingen naar een range of cel met foutmelding “Fout 1004, fout tijdens uitvoering”, zelfs de meest eenvoudige verwijzing naar cel Q2 in tabblad Voorraad loopt vast. Ongeacht of ik het schrijf als Cells(2,17), Range(“Q2”), met of zonder object Workbook Workbook.Sheets(“Voorraad”)/Sheets(“Voorraad”). Nu loopt hij vast op de range in dit gedeelte:
With ThisWorkbook.Sheets("Voorraad").Cells(2, 17)
.FormulaR1C1 = "=Done"
.AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 17))
End WithBekijk bijlage Werkvoorraad.xlsm
Ik heb het idee dat ik vastloop omdat ik iets fundamenteels over het hoofd zie of niet weet. Kan iemand mij helpen erachter te komen waar ik iets verkeerd doe?
Alvast bedankt
Jonathan
Sub Done_Naomi()
'
' Done_Naomi Macro
'
' Sneltoets: Ctrl+uu
'
Dim Usedrows_Naomi As Integer
Dim Usedrows_voorraad As Integer
Dim Curr_employee As String
Dim rng As Range
Usedrows_Naomi = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Usedrows_voorraad = Sheets("Voorraad").Cells(Rows.Count, 2).End(xlUp).Row
Curr_employee = ActiveSheet.Name
With ActiveSheet.Cells(2, 11)
.Value = "Done"
.AutoFill destination:=ActiveSheet.Range(Cells(2, 11), Cells(Usedrows_Naomi, 11))
End With
With ThisWorkbook.Sheets("Voorraad").Cells(2, 17)
.FormulaR1C1 = "=Done"
.AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 17))
End With
With Cells(2, 18)
.FormulaR1C1 = "=Done_Naomi”
.AutoFill destination:=Sheets("voorraad").Range(Cells(2, 18), Cells(Usedrows_voorraad, 18))
End With
Sheets("Voorraad").Range("R2").FormulaR1C1 = "=Done_Naomi"
ThisWorkbook.Sheets("Voorraad").Cells(2, 17).Activate
ThisWorkbook.Sheets("Voorraad").Range(Cells(2, 17), Cells(Usedrows_voorraad, 18)).AutoFill destination:=Range(Cells(2, 17), Cells(Usedrows_voorraad, 18)), Type:=xlFillDefault
Sheets("Voorraad").Cells(2, 18).Activate
ActiveCell.AutoFill destination:=Range(Cells(2, 18), Cells(Usedrows_voorraad, 18)), Type:=xlFillDefault
Sheets("Voorraad").Range("Q:R").Copy
Sheets("Voorraad").Columns("P:Q").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Naomi").Columns("A:K").ClearContents
End Sub