Bir aralık seçerken Error 1004 "Application-defined or Object-defined error" ile ilgili bir sorun yaşıyorum.
Hala satırları seçebiliyorum (yani Rows("21:21").select
) ve aynı çalışma kitabının diğer sayfalarındaki aralıkları seçebiliyorum. Hatanın kodda olduğuna inanmıyorum. Belki de benim bilmediğim bir ayardır?
Aynı kodu daha önce birçok kez kullandım ama nedense bu altta çalışmasını sağlayamıyorum (hatanın oluştuğu yeri yorumladım)...
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
Satır sayısı sık sık değişeceği için kopyalama işleminde çok süslü davranmam gerekiyor. Yine, aşağıdaki kod daha önce hatasız olarak kullanıldı... ancak bu durumda değil.
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
Belki de kodunuz Sayfa1'in arkasındadır, bu nedenle odağı Sayfa2'ye değiştirdiğinizde nesneler bulunamıyor? Eğer durum buysa, sadece hedef çalışma sayfanızı belirtmek yardımcı olabilir:
Sheets("Sheet1").Range("C21").Select
Select'in nasıl çalıştığına pek aşina değilim çünkü mümkün olduğunca kaçınmaya çalışıyorum :-). Aralıkları seçmeden tanımlayabilir ve değiştirebilirsiniz. Ayrıca referans verdiğiniz her şey hakkında açık olmak iyi bir fikirdir. Bu şekilde, bir sayfadan veya çalışma kitabından diğerine geçtiğinizde izinizi kaybetmezsiniz. Bunu deneyin:
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
Biraz geç oldu ama ileride başvurmak için faydalı olabilir. Ben de aynı sorunu yaşadım ve sanırım bunun nedeni makronun çalışma sayfası düzeyinde kaydedilmiş olması. VBA proje penceresindeki modüller düğümüne sağ tıklayın, modül ekle'ye tıklayın ve makronuzu yeni modüle yapıştırın (çalışma sayfası düzeyinde kaydedilmiş olanı sildiğinizden emin olun).
Umarım yardımcı olur.
Excel'deki bazı işlemler kullanılabilir Bellek ile sınırlıdır. Aynı işlemi defalarca tekrarlarsanız bellek taşabilir ve excel artık tekrarlayamaz. Bu, aynı çalışma kitabında birkaç sayfa oluşturmaya çalışırken başıma geldi.