2016-08-09 4 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 
関連する問題