19.04.2021, 08:08
Halllo,
ich bin Neuling in der VBA-Programmierung - meine erste Programmierung - und habe ein Problem bei meinem letzten Code.
Bei der Durchsicht des Forums/Internets habe ich einen Code/Beitrag gefunden, der meinen Vorstellungen sehr nahe kommt.
https://www.clever-excel-forum.de/thread...+schreiben
Diesen habe ich auf meine Tabelle angepasst:
Es gelingt mir aber leider nicht folgende Änderungen mit aufzunehmen:
- die Daten sollen nur in das Tabellenblatt "Statistik" übertragen werden, wenn in Spalte D ein Eintrag in den Zellen steht
- im Anschluss daran sollen die übernommenen Zeilen aus den Tabellenblättern 1 bis 10 gelöscht werden.
Ich habe eine Beispieldatei inklusive der weiteren Codes (auskommentiert) angehängt. Diese funktionieren soweit einwandfrei.
Die Tabelle wird laufend neu befüllt.
Wäre es möglich derart die Übernahme der Daten zu variieren, dass
- bei Eingabe eines "x" nur die Spalten A - D und
- bei Eingabe der Kürzel "P1", "P4", "P6", "N1", "N2", "N3"; "N4" die gesamte Zeile übertragen wird?
Kann mir bitte jemand helfen. Vielen Dank!
Gruß
Ramona
ich bin Neuling in der VBA-Programmierung - meine erste Programmierung - und habe ein Problem bei meinem letzten Code.
Bei der Durchsicht des Forums/Internets habe ich einen Code/Beitrag gefunden, der meinen Vorstellungen sehr nahe kommt.
https://www.clever-excel-forum.de/thread...+schreiben
Diesen habe ich auf meine Tabelle angepasst:
Code:
Public Sub Worksheet_Activate()
Dim i As Long
Dim varQ As Variant
Me.Range(Me.Cells(2, 1), Me.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 4)) = "" 'ab A2 Zeilen leeren
For i = 1 To 10 'Anzahl vorhandener Tabellenblätter
With Worksheets(i)
If Len(.Cells(13, 1)) Then 'Zelle A13 befüllt dann
varQ = .Range(.Cells(13, 1), .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 4).Value 'ab Zelle A13 bis zum Ende Daten aus den Spalte A bis D einsammeln
Else
ReDim varQ(0)
End If
End With
If UBound(varQ) Then
With Me.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(varQ))
.Value = Worksheets(i).Name 'Herkunft der Daten
.Offset(, 1).Resize(, UBound(varQ, 2)).Value = varQ 'nacheinander in das Tabellenblatt schreiben
End With
End If
Next i
End Sub
Es gelingt mir aber leider nicht folgende Änderungen mit aufzunehmen:
- die Daten sollen nur in das Tabellenblatt "Statistik" übertragen werden, wenn in Spalte D ein Eintrag in den Zellen steht
- im Anschluss daran sollen die übernommenen Zeilen aus den Tabellenblättern 1 bis 10 gelöscht werden.
Ich habe eine Beispieldatei inklusive der weiteren Codes (auskommentiert) angehängt. Diese funktionieren soweit einwandfrei.
Die Tabelle wird laufend neu befüllt.
Wäre es möglich derart die Übernahme der Daten zu variieren, dass
- bei Eingabe eines "x" nur die Spalten A - D und
- bei Eingabe der Kürzel "P1", "P4", "P6", "N1", "N2", "N3"; "N4" die gesamte Zeile übertragen wird?
Kann mir bitte jemand helfen. Vielen Dank!
Gruß
Ramona