Datum als Variable abspeichern (VBA)

Ich zeige Dir hier zwei Möglichkeiten auf, wie Du das heutige Datum als Variable abspeichern und danach abrufen kannst. Als erstes ist dazu die Variable "MeinDatum" in VBA zu deklarieren:

Dim MeinDatum As Date

Nehmen wir an, das abzuspeichernde Datum steht in der (Hilfs-)Zelle "A1". Ich habe da die Formel "=HEUTE()" verwendet, um stets das heutige Datum auszugeben. Nachfolgender Code speichert dann den Datumswert aus Zelle "A1" als Variable "MeinDatum" ab:

MeinDatum = Range("A1").Value

In einer nächsten Zelle kann daraufhin dieser Wert ausgegeben werden, beispielsweise in Zelle "A2":

Range("A2") = MeinDatum

Durch diesen Schritt wird aufwändigeres und performanteres "Copy + Paste" vermieden und auf Änderungen innerhalb der Datei kann durch einmaliges Definieren von Variablen besser reagiert werden. Auch kann so beispielsweise das gestrige Datum einfach ausgegeben werden, indem man obige Code-Zeile mit "-1" ergänzt:

Range("A2") = MeinDatum - 1

Zuletzt ist zu erwähnen, dass das heutige Datum nicht zwingend in einer Hilfszelle hinterlegt werden muss. Man kann die Formel "=HEUTE()" auch direkt in VBA verarbeiten. Die Definition der Variable (vorher: "MeinDatum = Range("A1").Value") lautet demnach:

MeinDatum = Date

respektive direkt, ohne Variablen-Definition:

Range("A2") = Date

Durch diesen Schritt erübrigt sich die vorherige Variablen-Deklaration ("Dim MeinDatum As Date").

Live-Suche in der Excel-Suchmaschine

Wie Du in Excel eine simple Suchmaschine programmieren und einrichten kannst, wurde in einem älteren Beitrag (siehe Suchmaschine programmieren) illustriert. Hier wird nun ergänzt, wie Du eine Live-Suche etablierst, damit direkt nach Eingabe eines Suchkriteriums die Liste auf die entsprechenden Einträge gefiltert wird.

Nehmen wir nach wie vor an, dass in der Zelle "B1" das Suchkriterium steht. Falls sich also diese Zelle ändert, hat die Suchmaschine direkt zu reagieren. Das Makro aus dem Beitrag "Suchmaschine programmieren" ist hierzu nicht in einem Modul abzulegen, sondern direkt im entsprechenden Tabellenblatt (=Tabelle1 (Suchmaschine))!

vbaprojekttabelle

Zudem ist der Code leicht anzupassen, respektive  um nachfolgende zusätzliche Angaben zu ergänzen. Der vollständige Code wird dann weiter unten aufgeführt.

Anstelle von "Sub Suchmaschine()" zu Beginn hat die erste Codezeile zu lauten:

Private Sub worksheet_change(ByVal target As Range)

Zudem ist eine Wenn-Dann-Kondition einzubauen, die auf die Zelle "B1" verweist - und eben beim Anpassen dieser Zelle das Makro automatisch auslöst.

If target.Row = 1 And target.Column = 2 Then

Darauf folgt der gesamte Code der Suchmaschine, abgeschlossen (vor "End Sub") mit dem Befehl:

End If

Der vollständige Code ...

... (nicht in Modul1 sondern im Tabellenblatt direkt, wie oben erwähnt) lautet demnach:

Private Sub worksheet_change(ByVal target As Range)

If target.Row = 1 And target.Column = 2 Then

Range("D2").Select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$D$8").AutoFilter Field:=4, Criteria1:="<>0"

AnzahlTreffer = Application.WorksheetFunction.Subtotal(3, Range("A:A")) - 2

MsgBox ("Insgesamt " & AnzahlTreffer & " Treffer gefunden.")

End If

End Sub

Die Eingabe des Platzhalters/Sternchens (*) erübrigen

Beim Programmieren der Suchmaschine habe ich Dir aufgezeigt, dass das Suchkriterium jeweils mit einem Sternchen vor- und nachher versehen werden sollte - beispielsweise "*Pop*". Um diesem vorzubeugen (es ist also nur noch der Begriff einzugeben, ohne Platzhalter-Symbol), ist die WVERWEIS-Formel minim anzupassen. Wir kombinieren jeweils den Text "*" mit dem Zellbezug auf das Suchkriterium in "B1". Für die Zeile 3 lautet die Formel wie folgt (und kann auf sämtliche weiteren Zeilen herunterkopiert werden):

=WENNFEHLER(WVERWEIS("*"&$B$1&"*";A3:C3;1;FALSCH);0)

Pendenzenliste (re-post)

Im Dezember letzten Jahres habe ich hier eine Pendenzenliste veröffentlicht (hier geht's zum Blog). Aufgrund der positiven Resonanz stelle ich Euch diese Datei erneut zur Verfügung, da der Beitrag doch einige Seiten nach hinten gerutscht ist. Hier könnt Ihr das Dokument herunterladen:

Pendenzenliste.xlsm

Die Datei ermöglicht es, fertiggestellte Pendenzen mit einem Knopfdruck ("Liste aufräumen") auf das nächste Tabellenblatt ("Erledigt") zu verschieben. Falls Du einen Punkt reaktivieren möchtest, änderst Du einfach den Status auf "offen" und klickst auf den Button "Punkt(e) wiederherstellen". Zudem werden sämtliche Formatierungen wie Rahmen setzen etc. automatisch vorgenommen. Du kannst die Tabelle gerne abändern und zum eigenen Gebrauch verwenden!

Ich wünsche Euch allen eine frohe Weihnachtszeit und hoffe, dieses Instrument unterstützt Euch bei Euren täglichen planerischen Tätigkeiten oder zum Managen Eurer Projekte.