Jeg har et problem med en feil 1004 "Applikasjonsdefinert eller objektdefinert feil" når jeg velger et område.
Jeg er fortsatt i stand til å velge rader (dvs. Rows("21:21").select
) og å velge områder i andre ark i samme arbeidsbok. Jeg tror ikke feilen er i koden. Kanskje det er noen innstillinger jeg ikke er klar over?
Jeg har brukt nøyaktig samme kode mange ganger før, men av en eller annen grunn kan jeg ikke få den til å fungere i denne underdelen (jeg har kommentert hvor feilen oppstår) ...
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
Jeg trenger å bli fancy i kopieringen min, da mengden rader vil endres ofte. Igjen, koden nedenfor har blitt brukt før uten feil ... men ikke i dette tilfellet.
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
Kanskje ligger koden din bak Ark1, slik at objektene ikke kan finnes når du endrer fokus til Ark2? Hvis det er tilfelle, kan det hjelpe å spesifisere målregnearket ditt:
Sheets("Sheet1").Range("C21").Select
Jeg er ikke veldig kjent med hvordan Select fungerer fordi jeg prøver å unngå det så mye som mulig :-). Du kan definere og manipulere områder uten å velge dem. Det er også en god idé å være eksplisitt om alt du refererer til. På den måten mister du ikke oversikten hvis du går fra ett ark eller en arbeidsbok til en annen. Prøv dette:
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
Det er litt sent, men kan være nyttig for fremtidig referanse. Jeg hadde nettopp hatt det samme problemet, og jeg tror det er fordi makroen er registrert på regnearknivå. Høyreklikk på modulenoden i VBA-prosjektvinduet, klikk på Sett inn modul og lim deretter inn makroen din i den nye modulen (sørg for at du sletter den som er registrert på regnearknivå).
Håper dette hjelper.
Noen operasjoner i Excel er begrenset av tilgjengelig minne. Hvis du gjentar den samme prosessen om og om igjen, kan det føre til minneoverløp, og Excel vil ikke kunne gjenta den lenger. Dette skjedde med meg mens jeg prøvde å lage flere ark i samme arbeidsbok.