24.03.2015, 22:19
Hallo
Ich war mir sicher, zu meinem Problem schnell was zu finden. Jedoch ist es meist zu speziell oder ich denke zu kompliziert.
Ich habe zwei Blätter, "Tagesdaten" und "Formular". Im Formular wird ein Datum eingegeben, danach per Zellenformel ein Enddatum berechnet.
Diese beiden Daten sollen bei Eingabe E2 im VBA benutzt werden (If Target.Column = 5 Then ...) um:
- in "Tagesdaten" A:A das Anfangs- und Enddatum zu finden. Ein Datum kann mehrmals vorkommen (bei Vergleich() würde ich es mit ;0 bzw. 1 finden). Die jeweiligen Zeilen sind jedenfalls wichtig. Ich komme zwar mit dem Makro-Rekorder auf Match, aber wie stelle ich es an um einfach das Ergebnis in eine Variable zu schreiben.
- in "Formular" zwischen dem Begriff "Tag" + 3 Zeilen und "Summe" - 1 Zeile je in A:A alle übrigen Zeilen zu löschen
- in "Formular" nach dem Begriff "Tag" + 3 Zeilen die Anzahl Zeilen Enddatum - Anfangsdatum +1 einzufügen
- Rest bekomme ich gedanklich erstmal selber hin.
Momentan in anderer Mappe mit anderem Hintergrund in Verwendung und da in Benutzung für mich auch verständlich. Sicher kann man da was verwenden:
Ich habe hier etwas gefunden: http://www.clever-excel-forum.de/thread-...age-2.html
Da mir aber das zusammenhängende Verständnis mit VBA fehlt finde ich nur Bruchstücken und weiß nicht, was ich draus machen soll.
Schon mal Danke!
Ich war mir sicher, zu meinem Problem schnell was zu finden. Jedoch ist es meist zu speziell oder ich denke zu kompliziert.
Ich habe zwei Blätter, "Tagesdaten" und "Formular". Im Formular wird ein Datum eingegeben, danach per Zellenformel ein Enddatum berechnet.
Diese beiden Daten sollen bei Eingabe E2 im VBA benutzt werden (If Target.Column = 5 Then ...) um:
- in "Tagesdaten" A:A das Anfangs- und Enddatum zu finden. Ein Datum kann mehrmals vorkommen (bei Vergleich() würde ich es mit ;0 bzw. 1 finden). Die jeweiligen Zeilen sind jedenfalls wichtig. Ich komme zwar mit dem Makro-Rekorder auf Match, aber wie stelle ich es an um einfach das Ergebnis in eine Variable zu schreiben.
- in "Formular" zwischen dem Begriff "Tag" + 3 Zeilen und "Summe" - 1 Zeile je in A:A alle übrigen Zeilen zu löschen
- in "Formular" nach dem Begriff "Tag" + 3 Zeilen die Anzahl Zeilen Enddatum - Anfangsdatum +1 einzufügen
- Rest bekomme ich gedanklich erstmal selber hin.
Momentan in anderer Mappe mit anderem Hintergrund in Verwendung und da in Benutzung für mich auch verständlich. Sicher kann man da was verwenden:
Code:
summzeile = Application.Match("Summe", Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), 0)
Application.EnableEvents = False
(...)
Rows(endzeile + 1).Insert Shift:=xlDown
End Sub
Sub löschen(ByVal summzeile As Variant)
Dim i As Long
On Error GoTo fehler
'Leere Zeilen am Ende werden gelöscht
For i = summzeile - 3 To 8 Step -1
If Application.CountA(Range(Cells(i, 1), Cells(i, 7)), Range(Cells(i, 9), Cells(i, 11))) = 0 Then
Rows(i).Delete
End If
Next i
Ich habe hier etwas gefunden: http://www.clever-excel-forum.de/thread-...age-2.html
Da mir aber das zusammenhängende Verständnis mit VBA fehlt finde ich nur Bruchstücken und weiß nicht, was ich draus machen soll.
Code:
Private Sub CommandButton1_Click()
Dim lngLast As Long
If TextBox1 <> "" Or TextBox2 <> "" Then
With Sheets("Tabelle2")
.Cells.Clear
.Range("A1:B1") = Worksheets("Auswertung-Eingabe").Range("D1").Value
If TextBox1 <> "" Then .Range("A2") = ">=" & Format(TextBox1.Text, "YYYY-MM-DD")
If TextBox2 <> "" Then .Range("B2") = ">=" & Format(TextBox2.Text, "YYYY-MM-DD")
End With
With Worksheets("Auswertung-Eingabe")
lngLast = .Cells(.Rows.Count, 4).End(xlUp).Row
.Range("D1:J" & lngLast).AdvancedFilter Action:= _
xlFilterCopy, CriteriaRange:=Sheets("Tabelle2").Range("A1:B2"), CopyToRange:=Sheets("Tabelle2").Range("A5"), _
Unique:=False
End With
With Sheets("Tabelle2")
lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row
.PageSetup.PrintArea = "$A$5:$C$" & lngLast
End With
End If
End Sub