2013-03-08 767 views
0

我是VBA的新手。我試圖在Sheet1中找到一些數據並將其複製到Sheet2。當我從Sheet1中選擇數據時,我需要將它附加到已經在Sheet2中的數據。VBA將數據添加到Excel 2010中的最後一行

我可以使用下面的代碼找到並粘貼數據,但我無法追加它。我在代碼中做了什麼錯誤?

Sub Copy_To_Another_Sheet_1() 

Dim FirstAddress As String 
Dim MyArr As Variant 
Dim Rng As Range 
Dim Rcount As Long 
Dim i As Long 
Dim NewSh As Worksheet 
With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
End With 

MyArr = Array("37", "283", "300", "112", "1100", "336", "98") 

Set NewSh = Sheets("Sheet2") 

With Sheets("Sheet1").Range("B5:B500") 

    Rcount = 0 

    For i = LBound(MyArr) To UBound(MyArr) 

     Set Rng = .Find(What:=MyArr(i), _ 
         After:=.Cells(.Cells.Count), _ 
         LookIn:=xlValues, _ 
         LookAt:=xlWhole, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlNext, _ 
         MatchCase:=False) 

     If Not Rng Is Nothing Then 
      FirstAddress = Rng.Address 
      Do 
       Rcount = Rcount + 1 
       Rng.EntireRow.Copy NewSh.Range("A" & Rcount) 

       Set Rng = .FindNext(Rng) 
      Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress 
     End If 
    Next i 

End With 

With Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
End With 

End Sub 
+0

之後移動,這是什麼意思,您不能複製和粘貼數據,但不能附加它? – 2013-03-08 08:05:29

+0

什麼是不工作?我測試了你的代碼,它適用於我,數據被正確地粘貼到目標表單上。 – dee 2013-03-08 08:19:11

+0

追加意味着當一次又一次運行宏時,將新數據添加到sheet2下一個空行。 – 2013-03-08 10:36:38

回答

1

我想'追加'意味着一次又一次地運行宏時添加數據。這種情況下次你運行會覆蓋你在sheet2中的內容。您需要更改Rcount時可變進:

Rcount = NewSh.Cells(NewSh.Rows.Count,1).End(xlUp).Row+1 

找到列A,如果你首次運行時的代碼(如果你真的需要有 一些額外的變化將需要在Sheet2中的第一個空單元格結果在第1行)。請檢查Rcount增量行的位置,而應該在.copy

+0

其實我不能理解你的解釋。我對這件事很陌生。你能解釋更多嗎? – 2013-03-08 11:14:27

+0

根據你的評論下面你問我的想法是好的問題。試着用上面提供的代碼替換你的行:'Rcount = 0'。正如我所說,它不是100%準確的,但你會看到結果,你可以自己做出進一步的改變。 – 2013-03-08 11:21:48

+0

是的,我試過Rcount = 0。當一次又一次運行宏時,它會用新數據替換舊數據,但我需要在舊數據末尾添加新數據。 – 2013-03-08 11:50:35

相關問題