Excel VBA – Wie Sie das aktuelle Datum in einer Liste finden
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
In diesem Beitrag zeige ich Ihnen, wie Sie mit der Find
-Methode in einer Liste von Datumswerten das aktuelle Datum finden können.
In der Beispieltabelle ist pro Tag eine Umsatzprognose abgebildet. Wir wollen nun schnell zum heutigen Datum springen, um uns die Prognose anzuschauen und mit den tatsächlichen Umsätzen zu vergleichen.
Dazu legen wir ein Makro an. Rufen Sie dazu die Entwicklungsumgebung mit der Tastenkombination ALT + F11
auf und fügen Sie ein neues Modul ein.
Zunächst definieren wir eine Variable vom Typ Range
.
Sub AktuellesDatumFinden()
Dim rngArea As Range
End Sub
Nun wird mit der Find
Methode nach einer Zelle gesucht, die das aktuelle Datum in den Werten des Tabellenblatts Prognose enthält. Dabei werden die Zellen A2
bis A20
durchsucht.
Sub AktuellesDatumFinden()
Dim rngArea As Range
'Aktuelles Datum Suchen
Set rngArea = Worksheets("Prognose").Range("A2:A20").Find(What:=Date, LookIn:=xlValues)
End Sub
111 VBA Makros die Ihr Leben leichter machen
Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.
Wird das heutige Datum gefunden, wird die Zelle mit der Umsatzprognose ausgewählt. Dieses befindet sich rechts neben dem Datum. Wenn das heutige Datum nicht gefunden wird, soll eine Fehlermeldung erscheinen. Der gesamte Code sieht nun so aus:
Sub AktuellesDatumFinden()
Dim rngArea As Range
'Aktuelles Datum Suchen
Set rngArea = Worksheets("Prognose").Range("A2:A20").Find(What:=Date, LookIn:=xlValues)
'Wenn Datum gefunden
If Not rngArea Is Nothing Then
'Umsatz (Nebenzelle der Fundzelle) auswählen
rngArea.Offset(0, 1).Select
Else
'Wenn Datum nicht gefunden
'Nachricht ausgeben
MsgBox "Das Datum " & Date & " wurde nicht gefunden"
End If
End Sub
Wenn Sie das Makro nun mit der Taste F5
ausführen, wird die Zelle mit der aktuellen Prognose markiert.
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.
Beeindrucke deinen Chef mit coolen Excel Tricks!
- Lasse dich von deinen Kollegen nicht abhängen!
- Spare Zeit und nutze diese für angenehmere Dinge
- Steigere deine Produktivität und Effizienz
- Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
- Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.

Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Bildquelle: Pexels, CC0 Public Domain
Hallo Herr Reis können Sie mir helfen?
Per Vba soll folgendes passieren.
Ich habe 60 Tabellenblätter.
Ich möchte das in den Benutzten Zeilen in Spalte A gezählt werden.
In dem Bereich soll von Tabelle 1 bis Tabelle 60 Zelle in b-c-d-e+f gerechnet wird.
Das Ergebnis soll dann Zeilenweise in Spalte G eingetragen werden.
Ich hoffe ich habe mich verständlich ausdrücken können und Sie können mir helfen.
Freundliche Grüße
Andrew Scoins
Hallo Andrew,
leider habe ich es nicht ganz verstanden.
Das Makro soll durch alle Tabellenblätter gehen.
Dabei soll geschaut werden, wie viele Zeilen in Spalte A benutzt werden. Kann dabei in der Spalte B mehr stehen als in Spalte A?
Dann gehe ich für alle Zeile die Spalten durch und rechne b-c-d-e+f ?
Viele Grüße
Denis
Hallo Herr Reis, Vielen Dank für ihre Antwort.
Dieser Code bildet in allen 60 Tabellenblättern die Summen der Spalten B bis F
Zeilenbezug ist.B4 bis B53. Ergebnis steht dann in Zelle B54
Zeilenbezug ist.C4 bis C53. Ergebnis steht dann in Zelle C54
Zeilenbezug ist.D4 bis D53. Ergebnis steht dann in Zelle D54
Zeilenbezug ist. E4 bis E53. Ergebnis steht dann in Zelle E54
Zeilenbezug ist.F4 bis F53. Ergebnis steht dann in Zelle F54
Dim blattnr As Integer
Dim bereich As Range
For blattnr = 1 To 60
For spalte = 2 To 7
Set bereich = Worksheets(blattnr).Range(Worksheets(blattnr).Cells(4, spalte), Worksheets(blattnr).Cells(53, spalte))
Worksheets(blattnr).Cells(54, spalte).Formula = „=sum(“ & bereich.Address & „)“
Next spalte
Next blattnr
Das ist allerdings nicht von mir programmiert dazu fehlt mir das Wissen.
Jetzt suche Ich einen Code der in allen 60 Tabellen die benutzten Zeilen prüft.und dann
In Spalte G zeilenweise Rechnet
Zelle Spalte B-Zelle Spalte C-Zelle Spalte D-Zelle Spalte E-Zelle Spalte F
Leider Kann ich keine Dateien anhängen sonst hätten Sie sich meine Userform einmal ansehen können.
Ich hoffe das Es jetzt verständlicher ist.
Freundliche Grüße
Andrew Scoins
Hallo Andrew,
ist ziemlich viel hard gecodet.
Ich würde durch alle Blätter gehen – zum Beispiel wie hier: Alle Tabellen schützen.
Dann alle Zeilen durchgehen – ein Beispiel finden Sie hier: Alle verwendete Zeilen bearbeiten.
Und während ich alle Zeilen durchgehe, die Spalte G berechnen. Die Spalten sind ja dabei fix.
Viele Grüße
Denis
Hallo Herr Reis vielen dank für ihre Antwort da ich ja wie bereits gesagt das ganze nur mit Hilfe schaffe da da mir das Wissen fehlt wäre es mir eine große hilfe wenn Sie mir beim erstellen des codes behilflich sein können
Damit würden Sie mir sehr helfen…
Falas Sie mir nicht helfen können aus welchen Gründen auch immer wäre eine kurze nachricht sehr nett von ihnen…
Das problem ist nämlich bei mir das ich solche dinge erst einmal gesehen haben muss um das zu verstehen.
Vielen dank.
Freundliche Grüße
Andrew
Hallo Andrew,
anbei der Code. Wenn du die Spalten A bis C summieren und das Ergebnis in D schreiben willst, verwende den folgenden Code. Dabei ist die Zeile variabel.
.Range("D" & iStartZeile).Formula = _
"=Sum(" & .Range(.Cells(iStartZeile, iStartSpalte), _
.Cells(iEndZeile, iEndSpalte)).Address(0, 0) & ")"
Wenn du A + B – C berechnen willst, verwende bitte den folgenden Code. Dabei wird das Ergebnis in E geschrieben. Die Zeile ist variabel.
.Range("E" & iStartZeile).Formula = "=A" & iStartZeile & "+B" & iStartZeile & "-C" & iStartZeile & ""
Guten Tag Herr Reis,
solange man das Datum in dem zu durchsuchenden Bereich nicht berechnet hat funktioniert dies hervorragend. Leider aber habe ich in meinem Falle die Datumsspalte im Excel berechnet und hier funktioniert dies so eben leider nicht! Haben Sie eine Idee wie dies auch in diesem Falle funktionieren könnte? Worauf greift denn VBA eigentlich zurück? Auf den berechneten Inhalt, so wie es ja für mich irgendwo Sinn machen würde oder auf die Formel, so wie es ja der Fall zu sein scheint?
Vielen Dank schon einmal und viele Grüße,
Tobias
Hallo Herr Reis,
Meine Excel-Datei hat mehrere Tabellenblätter. Auf jedem Blatt sind in Spalte 1 die datumswerte aufgelistet. Gibt es eine Möglichkeit,über ein Makro auf einem Button zum heutigen Datum zu springen?
Vielen Dank für Ihre Hilfe.