Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


per VBA Datum in Spalte finden und Zeilen-Nr. verwenden
#1
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:
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
Schon mal Danke!
Grüße,

Hardilein
mit Excel 2003
to top
#2
Hallo nochmal.


Ich habe jetzt noch im "Formular" einen Code hinzugefügt, der mir zumindest erstmal paar Zeilen leer zur Verfügung stellt. Dann muss es nur den tatsächlich benötigten entsprechen.


Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Column = 5 And Target.Row = 2 Then
   datezeile = Application.Match("Datum", Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), 0)
   Cells(datezeile, 3) = ""
   If datezeile > 11 Then Rows("8:" & datezeile - 5).Delete
   Rows("8:26").Insert
   Range("A7:J27").FillDown
   Cells(6, 2).Select
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Danke für weitere Hilfe.
Grüße,

Hardilein
mit Excel 2003
to top
#3
Hallo 
Also ich frage noch mal nach einem Tipp für die Suche nach einem Start-Datum und End-Datum in "Tagesdaten"A:A, welches in dem ausführenden Blatt "Formular" in Zelle E2 geschrieben steht.
Ich brauche Start-Datum-Zeile und End-Datum-Zeile als Variable zur weiteren Verwendung.
Alles was ich finden kann funktioniert entweder nicht oder entspricht nicht dem was ich brauche.
Vielleicht findet sich doch noch ein Helfender. Danke
Grüße,

Hardilein
mit Excel 2003
to top
#4
Hi Hardi,

(29.03.2015, 16:09)Hardilein schrieb: Also ich frage noch mal nach einem Tipp für die Suche nach einem Start-Datum und End-Datum in "Tagesdaten"A:A, welches in dem ausführenden Blatt "Formular" in Zelle E2 geschrieben steht.
Ich brauche Start-Datum-Zeile und End-Datum-Zeile als Variable zur weiteren Verwendung.
Alles was ich finden kann funktioniert entweder nicht oder entspricht nicht dem was ich brauche.
Vielleicht findet sich doch noch ein Helfender. Danke

nicht, daß Du meinst, wir ignorieren Dich, aber ich habe momentan keine Idee, wie ich Dir helfen könnte.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#5
Hallo

Bist du ganz allein hier?  19

Ich in mittlerweile ein Stückchen weiter und das nächste Stückchen suche ich gerade.

Habe den Makrorek. bedient und kam dann mittels guugl zu dem hier:

Code:
Sub Makro2()
Dim ende

   MsgBox Application.Match(Worksheets("Wochenbericht").Cells(2, 5), Worksheets("Tagesdaten").Range("A:A"), 1)

ende = Mid$(Worksheets("Formular").Cells(2, 7), 8) 'da steht Text und dann das Datum in Form von 29.03.2015

MsgBox Application.Match(ende, Worksheets("Tagesdaten").Range("A:A"), 1) 'und das geht nicht weil ich noch den String aus Mid in ein Date umwandeln muss - denke ich mal.

End Sub

Mal sehn wer schneller ist.

Danke, bis gleich.
Grüße,

Hardilein
mit Excel 2003
to top
#6
Hallo,

versuch mal so:


Code:
MsgBox Application.Match(CLng(CDate(ende)), Range("A:A"), 1)
Gruß Atilla

Excel 2007
to top
#7
Danke, klappt.

Was auch immer (ohne nachzusehen) CLng() bedeutet, aber es funzt.


Hier der komplette Code in meinem Blatt. Damit wäre wieder ein Schritt erreicht.
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Woche
Dim datezeile
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Column = 5 And Target.Row = 2 Then
   datezeile = Application.Match("Datum", Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), 0)
   Cells(datezeile, 3) = ""
   If datezeile > 11 Then Rows("8:" & datezeile - 4).Delete
   Woche = Application.Match(CLng(CDate(Mid$(Cells(2, 7), 8))), Worksheets("Tagesdaten").Range("A:A"), 1) _
   - Application.Match(Cells(2, 5), Worksheets("Tagesdaten").Range("A:A"), 0) + 1
   Rows("8:" & 8 + Woche - 3).Insert 'in 6 + 7 stehen Formeln zum runterziehen
   Range("A7:A" & 7 + Woche - 2).FillDown
   Range("B6:J" & 7 + Woche - 2).FillDown ' wird noch geändert und die Formeln komplett eingefügt - wenn Zeit ist
   Cells(6, 2).Select
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Grüße,

Hardilein
mit Excel 2003
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
Question Wie ordne ich Zeilen entsprechend einer Spalte alphabetisch? Olivenbaum2013 9 95 08.12.2016, 11:57
Letzter Beitrag: BoskoBiati
Question Zeilen entsprechend den Einträgen in einer Spalte automatisch alphabetisch ordnen. Olivenbaum2013 7 89 06.12.2016, 08:37
Letzter Beitrag: Olivenbaum2013
  wenn in tabelle wert in spalte dann neue spalte in neuer tabelle merzens 4 102 16.11.2016, 13:44
Letzter Beitrag: schauan
  Wert in Spalte finden und ganze Zeile übertragen VBA BadHabiit 9 360 25.09.2016, 11:50
Letzter Beitrag: schauan
  Wenn Spalte E nicht leer dann Datum in Spalte O VBA BadHabiit 4 240 20.09.2016, 14:49
Letzter Beitrag: BadHabiit
  Funktion -> Nur in Spalte X zählen wenn Y in Spalte Z steht MacTop 18 535 07.09.2016, 13:59
Letzter Beitrag: MacTop
  vergleich mehrerer zeilen mit datum georgh1991 9 378 04.08.2016, 13:39
Letzter Beitrag: georgh1991
  Relative Verweise verwenden VBA Amateur 3 281 28.07.2016, 21:07
Letzter Beitrag: VBA Amateur
  Daten aus Matrix verwenden Rudiii 1 218 25.06.2016, 11:51
Letzter Beitrag: schauan
  Verkette Spalte A wenn "x" in Spalte B Goleo 6 475 31.05.2016, 17:39
Letzter Beitrag: Goleo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste