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
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.
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.