2016-08-09 62 views
0

我試圖創建一個宏,其中它需要動態數量的行(用戶輸入),並將它們粘貼到另一個表中的表中。起初,我正在艱難的時間尋找並尋找方法。當我從VBA運行它時,我有一個第一次工作的解決方法(它正確地將「原始」範圍並將其粘貼到表中),但是當我按下宏指定按鈕後,崩潰。我的代碼如下:VBA宏崩潰時粘貼到表

Sub AddRawData() 

Dim count_of_data As Long 
Dim rng As Range 

Set rng = Sheets("New Input Raw Data").Range("B5", Range("B5").End(xlDown).End(xlToRight)) 
count_of_data = rng.Rows.Count 

Sheets("Master Data").Select 
For x = 1 To count_of_data 
    ActiveSheet.ListObjects(1).ListRows.Add 
Next x 
Sheets("New Input Raw Data").Select 
rng.Select 
rng.Cut 
Sheets("Master Data").Select 
Range("b65536").End(xlUp).End(xlUp).Select 
ActiveCell.Offset(1).Select 
ActiveSheet.Paste 

End Sub 

我卡的那一刻,並試圖像使用ActiveCell.paste或Range.Paste各種變通,但遇到同樣的崩潰問題。任何建議或代碼更正將不勝感激。謝謝!

+0

請分享,如果它是拋出任何錯誤。或者請分享究竟發生了什麼?任何彈出窗口,或任何類似的沒有響應.. – Siva

+0

我已經試用了有限的數據在Excel 2010中的代碼。它的工作正常。您使用的是哪個版本的Excel? – Siva

回答

1

如果您希望將新插入的數據從新輸入的原始數據工作表複製到現有數據的末尾主數據表,你並不需要所有的Select和大部分行,你可以運行下面的代碼:

Sub AddRawData() 

Dim rng As Range 
Dim sht_NewData As Worksheet 
Dim sht_MasterData As Worksheet 

Set sht_NewData = ThisWorkbook.Worksheets("New Input Raw Data") 
Set sht_MasterData = ThisWorkbook.Worksheets("Master Data") 

sht_NewData.Select 
Set rng = sht_NewData.Range("B5", Range("B5").End(xlDown).End(xlToRight)) 

rng.Copy Destination:=sht_MasterData.Range("B" & sht_MasterData.Cells(sht_MasterData.Rows.Count, "B").End(xlUp).Row + 1) 

End Sub