2014-10-08 126 views
0

這是代碼:Excel的VBA:範圍類的複製方法失敗

Dim rngReason As Range, rngDest As Variant 

Set rngDest = wksRemoved.Range("A1").CurrentRegion 
Set rngDest = rngDest.Cells(rngDest.Rows.Count + 1, 1) 

Set rngReason = Range("A1").CurrentRegion 
Set rngReason = rngReason.Columns(rngReason.Columns.Count).offset(0, 1) 
Set rngReason = Intersect(rngReason, rngDupeRows) 

rngReason.Cells.Value2 = "Duplicate " & strDedupeField 

''Fails here with the error message: 
'' Copy method of range class failed 
rngDupeRows.Copy Destination:=rngDest 

rngDupeRows是一個範圍。在錯誤的時間rngDupeRowsrngDest地址的值是:

rngDest.Address  "$A$2"  Variant/String 
rngDupeRows.Address "$3:$98301" String 

代碼的目的是從一個工作簿複製行並將它們粘貼到另一個。我已經在不同的範圍上運行過多次,並且工作正常。

任何想法錯誤的原因可能是什麼?

+2

你在哪裏定義rngDupeRows範圍分配每個單元格的值? – martin 2014-10-08 14:26:53

+0

@馬丁未能聲明該變量應該引發424「Object Required」錯誤。忽略分配它應該引發91「對象變量或未設置塊」。 – 2014-10-08 14:35:46

+0

您正在將整個行從3複製到98301,Excel可能會遇到此範圍大小的問題。你可以將rngDupeRows的地址更改爲特定列嗎? – Dave 2014-10-08 14:41:40

回答

0

可能需要很長的時間,但如果必須這樣做而不是使用然後「複製」,你可以嘗試添加一個循環,在

 Dim rngReason As Range, rngDest As Variant 
     Set rngDest = wksRemoved.Range("A1").CurrentRegion 
     Set rngDest = rngDest.Cells(rngDest.Rows.Count + 1, 1) 

     Set rngReason = Range("A1").CurrentRegion 
     Set rngReason = rngReason.Columns(rngReason.Columns.Count).offset(0, 1) 
     Set rngReason = Intersect(rngReason, rngDupeRows) 

     rngReason.Cells.Value2 = "Duplicate " & strDedupeField 

     'rngDupeRows.Copy Destination:=rngDest 
     ' Try messing around with something like this code. 
     Dim rngTmp As Range 
     For Each rngTmp In rngDest 
      rngTmp.value = rngDupeRows.Value 
     Next 
     '*** 
相關問題