VBA:n suoritusaikavirhe 1004 "Sovelluksen määrittelemä tai objektin määrittelemä virhe" kun valitaan alue

Minulla on ongelma Virhe 1004 "Sovelluksen tai kohteen määrittelemä virhe" kun valitset alueen.

Pystyn silti valitsemaan rivejä (eli Rows("21:21").select) ja valitsemaan alueita saman työkirjan muissa arkeissa. En usko, että virhe on koodissa. Ehkä se on jokin asetus, josta en ole tietoinen?

Olen käyttänyt täsmälleen samaa koodia monta kertaa aiemmin, mutta jostain syystä en saa sitä toimimaan tässä alatunnisteessa (olen kommentoinut, missä virhe ilmenee)...

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

Minun on saatava kaikki fancy minun kopiointi, koska rivien määrä muuttuu usein. Jälleen kerran, alla olevaa koodia on käytetty ennenkin ilman virhettä... mutta ei tässä tapauksessa.

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

Ehkä koodisi on Sheet1:n takana, joten kun vaihdat fokuksen Sheet2:een, objekteja ei löydy? Jos näin on, kohdelaskentataulukon määrittäminen saattaa auttaa:

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

En'ole kovin perehtynyt siihen, miten Select toimii, koska yritän välttää sitä mahdollisimman paljon :-). Voit määritellä ja käsitellä alueita valitsematta niitä. Myös se'on hyvä idea olla selkeä kaikesta mihin viittaat. Näin et menetä jälkeä, jos siirryt arkilta tai työkirjasta toiseen. Kokeile tätä:

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

Se on hieman myöhässä, mutta saattaa olla hyödyllistä tulevaa käyttöä varten. Minulla oli juuri ollut sama ongelma, ja luulen, että se johtuu siitä, että makro tallennetaan työarkin tasolla. Napsauta hiiren kakkospainikkeella VBA-projekti-ikkunan Moduulit-solmua, napsauta Lisää moduuli ja liitä sitten makro uuteen moduuliin (varmista, että poistat työarkkitasolla tallennetun makron).

Toivottavasti tästä on apua.

Kommentit (1)

Joitakin Excelin toimintoja rajoittaa käytettävissä oleva muisti. Jos toistat samaa prosessia yhä uudelleen ja uudelleen, se voi aiheuttaa muistin ylivuodon, eikä Excel pysty enää toistamaan sitä. Tämä tapahtui minulle, kun yritin luoda useita arkkeja samaan työkirjaan.

Kommentit (0)