Ik heb een probleem met een Error 1004 "Application-defined or Object-defined error" bij het selecteren van een bereik.
Ik ben nog steeds in staat om rijen te selecteren (d.w.z. Rows("21:21").select
) en om bereiken te selecteren in andere bladen van dezelfde werkmap. Ik geloof niet dat de fout in de code zit. Misschien is het een instelling waar ik niet van op de hoogte ben?
Ik heb exact dezelfde code al vele malen eerder gebruikt, maar om de een of andere reden lukt het me niet om hem in deze sub te laten werken (ik heb commentaar gegeven op de plaats waar de fout optreedt)...
Sub CopySheet1_to_PasteSheet2()
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
'>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
'Copy Data
Range("A21:C" & CLastFundRow).Select
Selection.Copy
'Paste Data Values
Sheets("PalTrakExport PortfolioAIdName").Select
Range("A21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Bring back to top of sheet for consistancy
Range("A21").Select
Range("A1").Select
End Sub
Ik moet het kopiëren heel fancy aanpakken omdat het aantal rijen vaak zal veranderen. Nogmaals, de onderstaande code is eerder gebruikt zonder fouten ... maar niet in dit geval.
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
'>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
Misschien staat je code achter Blad1, zodat wanneer je de focus wijzigt naar Blad2 de objecten niet gevonden kunnen worden? Als dat'het geval is, zou het eenvoudig specificeren van je doel werkblad kunnen helpen:
Sheets("Sheet1").Range("C21").Select
Ik'ben niet erg bekend met hoe Selecteren werkt omdat ik het zoveel mogelijk probeer te vermijden :-). Je kunt bereiken definiëren en manipuleren zonder ze te selecteren. Ook's het een goed idee om expliciet te zijn over alles waarnaar je verwijst. Op die manier raak je het spoor niet bijster als je van het ene blad of de ene werkmap naar de andere gaat. Probeer dit maar eens:
Option Explicit
Sub CopySheet1_to_PasteSheet2()
Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer
Dim wksSource As Worksheet, wksDest As Worksheet
Dim rngStart As Range, rngSource As Range, rngDest As Range
Set wksSource = ActiveWorkbook.Sheets("Sheet1")
Set wksDest = ActiveWorkbook.Sheets("Sheet2")
'Finds last row of content
CLastFundRow = wksSource.Range("C21").End(xlDown).Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
'Copy Data
Set rngSource = wksSource.Range("A2:C" & CLastFundRow)
'Paste Data Values
Set rngDest = wksDest.Range("A21")
rngSource.Copy
rngDest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Bring back to top of sheet for consistancy
wksDest.Range("A1").Select
End Sub
Het's een beetje laat, maar kan nuttig zijn voor toekomstige referentie. Ik had zojuist hetzelfde probleem en ik denk dat het komt omdat de macro is opgenomen op werkbladniveau. Klik met de rechtermuisknop op het knooppunt modules in het VBA-projectvenster, klik op module invoegen en plak dan uw macro in de nieuwe module (zorg ervoor dat u de macro verwijdert die op het werkbladniveau is opgenomen).
Ik hoop dat dit helpt.
Sommige bewerkingen in Excel zijn beperkt door het beschikbare geheugen. Als je dezelfde bewerking steeds herhaalt, kan het geheugen vol raken en kan Excel het niet meer herhalen. Dit overkwam mij toen ik probeerde meerdere bladen in dezelfde werkmap te maken.