Ich versuche, alle Daten in einer bestimmten Spalte zu kopieren und sie über VBA in ein anderes Blatt in meiner Arbeitsmappe einzufügen, da dies über mehrere Spalten hinweg wiederholt werden soll. Aus irgendeinem Grund werden nicht alle Daten übertragen, da einige Daten leer sind. Mein Code in VBA lautet wie folgt.
Bin neu bei VBA und weiß die Hilfe von jedem zu schätzen, danke!
wsRawT und wsDetI sind meine definierten Variablen für das angegebene Arbeitsblatt.
wsRawT.Select
range("AU1").Select
ActiveCell.Offset(1, 0).range("A1").Select
range(Selection, Selection.End(xlDown)).Select
Selection.copy
wsDetI.Select
range("A1").Select
ActiveCell.Offset(1, 0).range("A1").Select
ActiveSheet.Paste
Antwort1
Sub test()
Dim wsRawT As Worksheet, wsDetI As Worksheet
Set wsRawT = ThisWorkbook.Sheets("Sheet1")
Set wsDetI = ThisWorkbook.Sheets("Sheet2")
wsRawT.Range(wsRawT.Cells(2, 47), wsRawT.Cells(wsRawT.UsedRange.Rows.Count, 47)).Copy _
Destination:=wsDetI.Cells(2, 1)
End Sub
PS.Range("AU2").Column = 47
Antwort2
Zum Kopieren von Spalten kann ein Benutzerformular verwendet werden. Das Benutzerformular enthält zwei Listenfelder. Die Spaltenüberschriften auf Blatt1 werden im ersten Listenfeld aufgelistet. Zwischen den Listenfeldern wird das Element durch Klicken auf die Schaltfläche von Listenfeld1 in Listenfeld2 verschoben. Die ausgewählten Spalten aus Listenfeld2 werden mit der Methode „Erweiterter Filter“ in das andere Blatt (Blatt2) kopiert.
Private Sub CommandButton1_Click()
Dim FirstCell, LastCell As Range
Dim basliklar As Integer
Dim baslangic_satiri As Long
Sheets("report").Select
If ListBox2.ListCount = 0 Then
MsgBox "You don't choose filter field "
Exit Sub
End If
ProgressDlg.Show 'Progress Bar
Set LastCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
Sheets("database").Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
Set FirstCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
SearchDirection:=xlNext, LookIn:=xlValues).Row, _
Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues).Column)
For basliklar = 0 To ListBox2.ListCount - 1
baslangic_satiri = 2
Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1) = ListBox2.List(basliklar, 0)
Sheets("database").Range(FirstCell, LastCell).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Sheets("database").Range(FirstCell, LastCell), _
CopyToRange:=Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1), _
Unique:=False
Next
Sheets("report").Columns.EntireColumn.AutoFit
CommandButton6.Enabled = True
End Sub