2016-08-09 11 views
0

Ich versuche, ein Makro zu erstellen, in dem es eine dynamische Anzahl von Zeilen (Benutzer eingegeben) und fügt sie in eine Tabelle in einem anderen Blatt. Ich hatte eine schwierige Zeit zu suchen und Wege zu finden, dies zuerst zu tun. Ich habe einen Workaround, der das erste Mal funktioniert (er nimmt den 'rohen' Bereich korrekt und fügt ihn in die Tabelle ein), wenn ich ihn von VBA aus starte, stürze aber, wenn ich die Makro-Taste direkt danach drücke. Mein Code ist unten:VBA Macro Crashing für beim Einfügen Bereich zu Tabelle

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 

Ich bin im Moment stecken und haben verschiedene Workarounds versucht, wie mit ActiveCell.paste oder Range.Paste, aber in der gleichen Krachen Problem laufen. Irgendwelche Vorschläge oder Code-Korrekturen würden sehr geschätzt werden. Vielen Dank!

+0

Bitte teilen Sie, wenn es irgendwelche Fehler wirft. Oder teilen Sie bitte mit, was genau passiert? Irgendein Popup oder irgendetwas, das nicht reagiert. – Siva

+0

Ich habe Ihren Code in Excel 2010 mit begrenzten Daten versucht. Es funktioniert gut. Welche Version von Excel verwenden Sie? – Siva

Antwort

1

Wenn Sie die neu eingefügten Daten aus New Eingang Rohdaten Arbeitsblatt an das Ende der bestehenden Daten in Stammdaten Blatt kopieren möchten, müssen Sie nicht alle Select und die meisten der Linien, können Sie nur den folgenden Code ausführen:

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 
Verwandte Themen