VBA Runtime Error 1004 "Programdefineret eller objektdefineret fejl" ved valg af område

Jeg har et problem med en fejl 1004 "Programdefineret eller objektdefineret fejl" når jeg vælger et område.

Jeg kan stadig vælge rækker (dvs. Rows("21:21").select) og vælge intervaller i andre ark i den samme projektmappe. Jeg tror ikke, at fejlen ligger i koden. Måske er det en eller anden indstilling, som jeg ikke er klar over?

Jeg har brugt præcis den samme kode mange gange før, men af en eller anden grund kan jeg ikke få den til at fungere i denne sub (jeg har kommenteret hvor fejlen opstå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 har brug for at blive helt fancy i min kopiering, da mængden af rækker vil ændre sig ofte. Igen, nedenstående kode er blevet brugt før uden fejl... men ikke i dette tilfælde.

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

Måske ligger din kode bag Ark1, så når du skifter fokus til Ark2, kan objekterne ikke findes? Hvis det er tilfældet, kan det måske hjælpe, hvis du blot angiver dit målarbejdsark:

Sheets("Sheet1").Range("C21").Select

Jeg'er ikke særlig bekendt med hvordan Select virker, da jeg prøver at undgå det så vidt muligt :-). Du kan definere og manipulere intervaller uden at markere dem. Det er også en god idé at være eksplicit omkring alt hvad du refererer. På den måde mister du ikke overblikket, hvis du går fra et ark eller en arbejdsbog til en anden. 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
Kommentarer (1)

Det er lidt sent, men kan være nyttigt som fremtidig reference. Jeg havde lige haft det samme problem, og jeg tror det er fordi makroen er registreret på regnearksniveau. Højreklik på modulknuden i VBA-projektvinduet, klik på insert module og indsæt så din makro i det nye modul (sørg for at slette den, der er registreret på regnearksniveau).

Jeg håber, at dette hjælper.

Kommentarer (1)

Nogle operationer i Excel er begrænset af den tilgængelige hukommelse. Hvis du gentager den samme proces igen og igen, kan det medføre et hukommelsesoverløb, og Excel vil ikke længere kunne gentage den. Dette skete for mig, da jeg forsøgte at oprette flere ark i samme arbejdsbog.

Kommentarer (0)