Errore di runtime VBA 1004 "Errore definito dall'applicazione o dall'oggetto" quando si seleziona l'intervallo

Sto avendo un problema con un errore 1004 "Application-defined or Object-defined error" quando si seleziona un intervallo.

Sono ancora in grado di selezionare le righe (cioè Rows("21:21").select) e di selezionare intervalli in altri fogli della stessa cartella di lavoro. Non credo che l'errore sia nel codice. Forse è qualche impostazione di cui non sono a conoscenza?

Ho usato lo stesso identico codice molte volte prima, ma per qualche motivo non riesco a farlo funzionare in questa sub (ho commentato dove si verifica l'errore)...

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

Ho bisogno di diventare fantasioso nella mia copia, poiché la quantità di righe cambierà frequentemente. Di nuovo, il codice seguente è stato usato prima senza errori... ma non in questo caso.

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

Forse il tuo codice è dietro il foglio1, quindi quando cambi il focus sul foglio2 gli oggetti non possono essere trovati? Se questo è il caso, specificare semplicemente il foglio di lavoro di destinazione potrebbe aiutare:

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

Non ho molta familiarità con il funzionamento di Select perché cerco di evitarlo il più possibile :-). Puoi definire e manipolare gli intervalli senza selezionarli. Inoltre è una buona idea essere espliciti su tutto ciò a cui si fa riferimento. In questo modo, non si perde traccia se si passa da un foglio o cartella di lavoro ad un altro. Prova questo:

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
Commentari (1)

È un po' tardi ma potrebbe essere utile per il futuro. Ho appena avuto lo stesso problema e penso che sia perché la macro è registrata a livello di foglio di lavoro. Clicca con il tasto destro del mouse sul nodo moduli nella finestra del progetto VBA, clicca su inserisci modulo poi incolla la tua macro nel nuovo modulo (assicurati di cancellare quella registrata a livello di foglio di lavoro).

Spero che questo aiuti.

Commentari (1)

Alcune operazioni in Excel sono limitate dalla memoria disponibile. Se si ripete lo stesso processo più e più volte potrebbe produrre un overflow di memoria ed Excel non sarà più in grado di ripeterlo. Questo mi è successo mentre cercavo di creare diversi fogli nella stessa cartella di lavoro.

Commentari (0)