Mijn probleem:
In VBA krijg ik de melding: Kan de onderbrekingsmodus momenteel niet activeren
en vervolgens de foutmelding: Fout 424 tijdens uitvoering: Object vereist
Mogelijk antwoord:
Vermijd 'Select' en 'Activate' in VBA. Dat geldt ook voor overbodige variabelen (bijv. die niet variëren)
Dit heb ik gevonden in de post : http://www.helpmij.nl/forum/showthread.php/696865-Excel-VBA-foutmelding-424-Object-vereist
Ik begrijp alleen niet, hoe ik mijn VBA-code dusdanig kan aanpassen. Ik ben nog lerende. ; )
Mijn vraag:
Ik heb een Macro in 4 stappen werkend. Nu ben ik die stappen gaan samenvoegen.
Bij stap 3 ('Draaitabel maken) naar 4 krijg ik de genoemde foutmelding. (Stap 3 lijkt wel afgemaakt te worden, omdat de weeknummers met 2 getallen worden uitgevoerd (laatste stap).)
Wanneer ik stap 4 daarna los uitvoer, werkt het weer wel.
Omdat ik nog lerend ben in VBA, zie ik niet goed, hoe ik het probleem daadwerkelijk kan oplossen.
Ik hoop dat iemand mij in de goede richting wil helpen.
Mijn VBA-code:
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
(Ik besef me, dat ik mijn VBA-code nog verder is op te schonen. Bepaalde tussenstapjes kunnen verwijderd worden, omdat die in het geheel niets meer toevoegen.
Ik wil later nog proberen op te schonen. Tips zijn welkom! ; )
Bestanden
Ik heb mijn excel-bestand met de macro's bijgevoegd: Master - wo-05-04-2017.xlsm
Tevens heb ik de twee planningen bijgevoegd, die normaal gesproken in de map "H:\Mijn Documenten\Excel\Voorbeelden\Test\Planningen" staan.
Ik hoop dat iemand mij verder wil helpen.
Bij voorbaat dank ik u hartelijk.
Met vriendelijke groeten,
LJ
In VBA krijg ik de melding: Kan de onderbrekingsmodus momenteel niet activeren
en vervolgens de foutmelding: Fout 424 tijdens uitvoering: Object vereist
Mogelijk antwoord:
Vermijd 'Select' en 'Activate' in VBA. Dat geldt ook voor overbodige variabelen (bijv. die niet variëren)
Dit heb ik gevonden in de post : http://www.helpmij.nl/forum/showthread.php/696865-Excel-VBA-foutmelding-424-Object-vereist
Ik begrijp alleen niet, hoe ik mijn VBA-code dusdanig kan aanpassen. Ik ben nog lerende. ; )
Mijn vraag:
Ik heb een Macro in 4 stappen werkend. Nu ben ik die stappen gaan samenvoegen.
Bij stap 3 ('Draaitabel maken) naar 4 krijg ik de genoemde foutmelding. (Stap 3 lijkt wel afgemaakt te worden, omdat de weeknummers met 2 getallen worden uitgevoerd (laatste stap).)
Wanneer ik stap 4 daarna los uitvoer, werkt het weer wel.
Omdat ik nog lerend ben in VBA, zie ik niet goed, hoe ik het probleem daadwerkelijk kan oplossen.
Ik hoop dat iemand mij in de goede richting wil helpen.
Mijn VBA-code:
-------------------------------------------------------------------------------
Code:
Sub MT_CopyDataFromMultipleWorkbooksIntoMaster()
' DEEL Macro1 CopyDataFromMultipleWorkbooksIntoMaster Macro
Dim FolderPath As String, Filepath As String, Filename As String
'LOCATIE : TEST : H:\Mijn Documenten\Excel\Voorbeelden\Test\Planningen\
'LOCATIE : TEST : I:\STO\Projecten\_Planning\PLANNINGEN\
FolderPath = "H:\Mijn Documenten\Excel\Voorbeelden\Test\Planningen\"
Filepath = FolderPath & "*.xls*"
Filename = Dir(Filepath)
Dim lastrow As Long, lastcolumn As Long
Do While Filename <> ""
'Meldingen uit
Application.DisplayAlerts = False
'Werkmap openen
Workbooks.Open (FolderPath & Filename), UpdateLinks:=3, Notify:=False
'Alle Kolommen zichtbaar maken
ActiveSheet.Cells.EntireColumn.Hidden = False
'Laatste Rij vinden
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Kolommen met ProjectNummer en ProjectNaam
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").FormulaR1C1 = "=R1C4"
Range("B1").FormulaR1C1 = "=R2C4"
Range("A1:B1").AutoFill Destination:=Range(Cells(1, 1), Cells(lastrow, 2)), Type:=xlFillDefault
'Laatste Kolom vinden
lastcolumn = ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column
'Range(“A6:**”) kopieren en werkmap sluiten
Range(Cells(6, 1), Cells(lastrow, lastcolumn)).Copy
ActiveWorkbook.Close
erow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
ActiveSheet.Paste Destination:=Worksheets("Blad1").Range(Cells(erow, 1), Cells(erow, lastcolumn))
Filename = Dir
Loop
' DEEL Macro2 Aanpassen_Tabel
'Naamgeving kolommen en Nummering weeknummers (t/m 52)
Range("A1").FormulaR1C1 = "ProjectNummer"
Range("B1").FormulaR1C1 = "ProjectNaam"
Range("C1").FormulaR1C1 = "Werk"
Range("D1").FormulaR1C1 = "Team"
Range("E1").FormulaR1C1 = "Persoon"
Range("F1").FormulaR1C1 = "X"
Range("G1").FormulaR1C1 = "Duur"
Range("H1").FormulaR1C1 = "Begin"
Range("I1").FormulaR1C1 = "Einde"
Range("J1").FormulaR1C1 = "Versie"
Range("K1").FormulaR1C1 = "Opmerking"
Range("L1").FormulaR1C1 = "SamenVoeg"
'Eerste twee weken nummeren en doorkopieren
Range("M1").FormulaR1C1 = "01"
Range("N1").FormulaR1C1 = "02"
Range("M1:N1").AutoFill Destination:=Range(Cells(1, 13), Cells(1, 64)), Type:=xlFillDefault
'Laatste Rij en Laatste Kolom vinden en definieren
erow = Blad1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
'Weeknummers in twee cijfers
Range(Cells(1, 13), Cells(1, lastcolumn)).NumberFormat = "00"
Rows("1:1").Font.Bold = True
'Kolom L (SamenVoeg) vullen met gegevens 11 voorgaande kolommen
Range("L2").FormulaR1C1 = "=RC[-11]&""|""&RC[-10]&""|""&RC[-9]&""|""&RC[-8]&""|""&RC[-7]&""|""&RC[-6]&""|""&RC[-5]&""|""&RC[-4]&""|""&RC[-3]&""|""&RC[-2]&""|""&RC[-1]"
Range("L2").AutoFill Destination:=Range(Cells(2, 12), Cells(erow - 1, 12))
'OPMAAK
'Kolommen fit
Range(Columns(1), Columns(lastcolumn)).EntireColumn.AutoFit
'Lijnen rond alle cellen
ActiveCell.CurrentRegion.Borders.LineStyle = xlContinuous
' DEEL Macro3 DraaiTabel_Maken Macro
'Laatste Rij en Laatste Kolom vinden en definieren
erow = Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
'Range selecteren en benoemen
Range(Cells(1, 12), Cells(erow - 1, lastcolumn)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlNo).Name _
= "myRange"
'Draaitabel maken
ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= _
"myRange", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="", TableName:="Draaitabel1", _
DefaultVersion:=xlPivotTableVersion14
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)
ActiveSheet.Cells(1, 1).Select
ActiveSheet.PivotTables("Draaitabel1").DataPivotField.PivotItems( _
"Aantal van Waarde").Position = 1
With ActiveSheet.PivotTables("Draaitabel1").PivotFields("Aantal van Waarde")
.Caption = "Som van Waarde"
.Function = xlSum
ActiveSheet.PivotTables("Draaitabel1").PivotFields("Kolom").NumberFormat = "00"
End With
'Hulpblad verwijderen
'Sheets("Data (2)").Delete
'Blad naam geven
'ActiveSheet.Name = "DraaiTabel"
' DEEL Macro4 DraaiTabel_Aanpassen Macro
'Laatste Rij en Laatste Kolom vinden en definieren
erow = Blad2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
lastcolumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column
'Andere tabel openen
Range(Cells(erow - 1, lastcolumn), Cells(erow - 1, lastcolumn)).ShowDetail = True
'Meldingen opheffen
Application.DisplayAlerts = False
'Tekst kolom A uitsplitsen
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("A:A").Select
Selection.TextToColumns Destination:=Range(Cells(1, 1), Cells(erow - 1, 1)), _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array _
(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array _
(9, 1), Array(10, 1), Array(11, 1)), TrailingMinusNumbers:=True
'Naamgeving kolommen en Weeknummers in twee cijfers
Range("A1").FormulaR1C1 = "ProjectNummer"
Range("B1").FormulaR1C1 = "ProjectNaam"
Range("C1").FormulaR1C1 = "Werk"
Range("D1").FormulaR1C1 = "Team"
Range("E1").FormulaR1C1 = "Persoon"
Range("F1").FormulaR1C1 = "X"
Range("G1").FormulaR1C1 = "Duur"
Range("H1").FormulaR1C1 = "Begin"
Range("I1").FormulaR1C1 = "Einde"
Range("J1").FormulaR1C1 = "Versie"
Range("K1").FormulaR1C1 = "Opmerking"
Range("L1").FormulaR1C1 = "Week"
Range("M1").FormulaR1C1 = "Uren"
Columns("L:L").NumberFormat = "00"
'Tabel uit elkaar laten vallen om selectie in volgende VBA-regel te deleten
ActiveSheet.ListObjects("Tabel2").Unlist
'Rijen met lege cel in kolom Uren deleten
Range("M:M").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'OPMAAK
'Kolommen fit
Range(Columns(1), Columns(lastcolumn)).EntireColumn.AutoFit
'Lijnen rond alle cellen
ActiveCell.CurrentRegion.Borders.LineStyle = xlContinuous
'Blad naam geven
ActiveSheet.Name = "Tabel"
'Einde
Application.DisplayAlerts = True
Range("A1").Select
End Sub
(Ik besef me, dat ik mijn VBA-code nog verder is op te schonen. Bepaalde tussenstapjes kunnen verwijderd worden, omdat die in het geheel niets meer toevoegen.
Ik wil later nog proberen op te schonen. Tips zijn welkom! ; )
Bestanden
Ik heb mijn excel-bestand met de macro's bijgevoegd: Master - wo-05-04-2017.xlsm
Tevens heb ik de twee planningen bijgevoegd, die normaal gesproken in de map "H:\Mijn Documenten\Excel\Voorbeelden\Test\Planningen" staan.
Ik hoop dat iemand mij verder wil helpen.
Bij voorbaat dank ik u hartelijk.
Met vriendelijke groeten,
LJ