[英]Copying Range After Last Row
我試圖在“ TempDataNew”的最后一行之后復制“ Leads”表中的整個范圍
If Sheets("Leads").Range("A1") <> "" Then
Set rngSource = Sheets("Leads").Range("A1").CurrentRegion
lastrowdyn = rngSource.Rows.Count
If lastrowdyn > 0 Then
Sheets("Leads").Range("A:A").Copy
Sheets("TempDataNew").Range ("A" & x)
Set rngSource = Sheets("TempDataNew").Range("A1").CurrentRegion
x = lastrowdyn + 1
End If
End If
代碼嘗試粘貼時出現“應用程序定義錯誤或對象定義錯誤” 。 有什么想法嗎?
據我所知,您想復制到TempDataNew
使用范圍的TempDataNew
,而不是Leads
。 所以改變這個
Set rngSource = Sheets("Leads").Range("A1").CurrentRegion
對此
Set rngSourceTempDatNew = Sheets("TempDatNew").Range("A1").CurrentRegion
lastrowdynTempDatNew = rngSourceTempDatNew.Rows.Count
另外,我猜您真的不需要或不需要復制Leads
的整個A列。 因此,這需要更改。
Sheets("Leads").Range("A:A").Copy
或這正是您最終將要做的。 我想建議您也為TempDatNew
一樣在Leads
A列中找到使用范圍的最后一行。 也許像
Set rngSourceLeads = Sheets("Leads").Range("A1").CurrentRegion
現在,可以使用類似以下方法從“ Leads
的范圍復制到TempDatNew
的正確位置
rngSourceLeads.Copy _
destination:=Worksheets("TempDatNew").Range("A" & lastrowdynTempDatNew + 1)
我無法確切地說出為什么您要存儲最后一行加上x
,但是我目前的想法是您不需要它。 每次運行此代碼時,它都會為您更新TempDatNew
的最后一行,您只需在此之后粘貼即可。
因此,總的來說,
If Sheets("Leads").Range("A1") <> "" Then
Set rngSourceTempDatNew = Sheets("TempDatNew").Range("A1").CurrentRegion
lastrowdynTempDatNew = rngSourceTempDatNew.Rows.Count
Set rngSourceLeads = Sheets("Leads").Range("A1").CurrentRegion
rngSourceLeads.Copy destination:=Worksheets("TempDatNew").Range("A" & lastrowdynTempDatNew + 1)
End If
編輯如果您只想復制“鉛”中的列A,請更改此
Set rngSourceLeads = Sheets("Leads").Range("A1").CurrentRegion
對此
lastrowdynLeads = Sheets("Leads").Cells(65000, 1).End(xlup).Row
Set rngSourceLeads = Sheets("Leads").Range("A1:A" & lastrowdynLeads)
假設您在“ Leads”表中A列的65000行下方沒有數據。
在開始運行代碼之前,您尚未指定x是什么。 我添加了一行以給出xa值。 用您的方式,excel將x評估為0,從而導致一個稱為Range("A0")
...的Range("A0")
不存在。
If Sheets("Leads").Range("A1") <> "" Then
Set rngSource = Sheets("Leads").Range("A1").CurrentRegion
lastrowdyn = rngSource.Rows.Count
x = 1 'Whatever integer it is supposed to start at
If lastrowdyn > 0 Then
Sheets("Leads").Range("A:A").Copy
Sheets("TempDataNew").Range ("A" & x)
Set rngSource = Sheets("TempDataNew").Range("A1").CurrentRegion
x = lastrowdyn + 1
End If
End If
我想我發現了您最初在代碼中遇到的問題...您的第一個IF語句顯示If Sheets("Leads").Range("A1") <> "" Then
。 您引用范圍對象,並將其與值進行比較。 如果使用Sheets("Leads").Range("A1").Value <> ""
,則錯誤應消失。
我不確定如果只使用一列(我也不是VBA邏輯中最精通的),為什么要使用.CurrentRegion
,但是如果您只想查找最后一行,則可以使用這樣的東西:
Dim Leads, TempDataNew as Worksheet
Set Leads = ThisWorkbook.Sheets("Leads")
Set TempDataNew = ThisWorkbook.Sheets("TempDataNew")
lastrowdyn = Leads.Cells(Leads.Rows.Count, "A").End(xlUp).Row
If Leads.Range("A1").Value <> "" And lastrowdyn > 0 Then
Leads.Range("A:A").Copy Destination:=TempDataNew.Range("A" & x)
x = lastrowdyn + 1
End If
為什么不只是這個呢?
Sub CopyRange()
Dim wsLeads As Worksheet, wsTemp As Worksheet
Dim lLastRowNew As Long, lRows As Long, iColumns As Integer
Set wsLeads = Worksheets("Leads")
Set wsTemp = Worksheets("TempDataNew")
lLastRowNew = wsTemp.UsedRange.Rows(wsTemp.UsedRange.Rows.Count).Row
lRows = wsLeads.UsedRange.Rows.Count
iColumns = wsLeads.UsedRange.Columns.Count
If wsLeads.Range("A1").Value <> "" And lRows > 0 Then
wsTemp.Cells(lLastRowNew + 1, 1).Resize(lRows, iColumns).Value = wsLeads.UsedRange.Value
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.