2017-04-18 122 views
1

我試圖創建一個VBA宏,它將搜索「Sheet1」中的非空白單元格,如果非空白,它會粘貼相應的活動單元格從「Sheet1」到「Sheet2」中的同一列。運行時錯誤:1004(複製到另一個工作表)

下面是我的代碼,但我敢肯定,我做錯了什麼,因爲代碼拋出我的錯誤:1004

Sub Test() 
    Dim cel As Range 
    Dim strAddress As String 
    Dim StartPoint As Range 

    Set StartPoint = ActiveCell 
'Change to necessary amount of Rows & Columns 
    With Sheets("Sheet1").Range(Cells(9, 5), Cells(1000, 200)) 
     Set cel = .Find(What:="*", After:=Cells(1000, 200), SearchOrder:=xlByRows, SearchDirection:=xlNext) 
     If Not cel Is Nothing Then 
      strAddress = cel.Address 
      Do 
       ' Do something with cel, e.g. 
       StartPoint.EntireColumn.Copy Destination:=Worksheets("Sheet2").Range(StartPoint.Column & "1").End(xlToRight).Offset(1) 
       Set cel = .FindNext(After:=cel) 
       If cel Is Nothing Then Exit Do 
      Loop Until cel.Address = strAddress 
     End If 
    End With 
End Sub 

可有人請告知我在做什麼錯? 謝謝!

+1

1)不在這裏搜索*運行時錯誤1004 *。 2)不使用調試器遍歷代碼來查看您嘗試訪問對象引用的哪個時間失敗或不正確。 3)在這裏不再搜索*運行時錯誤1004 *。 –

+0

嗨,我確實運行了調試器,它在「with」語句中顯示錯誤。而且我明白這個錯誤是由於VBA沒有掌握我在該範圍內提到的細胞。但問題是我不是一個強大的宏用戶,只是一個學習基礎知識的小孩! :)感謝您能否讓我知道我在代碼中犯的錯誤! :D –

+2

FWIW - 不合格的'Cells'參考文獻使用與Sheets(「Sheet1」)相對應的語句「Range(Cells,9)」,Cells(1000,200))。 .Range(ActiveSheet.Cells(9,5),ActiveSheet.Cells(1000,200))',這顯然是無稽之談。但您真的想要'帶有表格(「Sheet1」)。範圍(表格(「Sheet1」)。單元格(9,5),表格(「Sheet1」)。單元格(1000,200))''。正如@KenWhite所說,在這個網站上搜索可能會發現數百個問題顯示問題所在。 – YowE3K

回答

0

嘗試這兩個改動:

With Sheets("Sheet1").Range("E9:GR1000") 

cel.EntireColumn.Copy Worksheets("Sheet2").Columns(cel.Column) 
+0

你好:)感謝您的及時響應! 這消除了錯誤,但值不粘貼到Sheet2。 我添加了目的地:= StartPoint.EntireColumn.Copy Destination:= Worksheets(「Sheet2」)。Columns(StartPoint.Column) 但仍然結果相同。是否還需要添加另一行,以便將複製的列從Sheet1粘貼到Sheet2? –

+0

啊,我想你需要用'cel'替代'StartPoint'(參見編輯答案)。 @DragonWarrior –

+0

再次感謝你:)我理解這個概念!我想我需要調整這個塊的升技更符合我的需要。不過,再次感謝你:) –

相關問題