Excel VBA – Wie Sie das aktuelle Datum in einer Liste finden

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.

111 VBA Makros die Ihr Leben leichter machen. Egal ob Sie Einsteiger oder fortgeschrittener Anwender sind – in diesem Buch finden Sie Lösungen für Ihre alltäglichen Aufgaben. Keine Vorkenntnisse notwendig.

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.
Tabelle mit Prognosewerten

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.

Modul einfügen

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

Unternehmensplanung mit SAP BPC

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.
Nebenzelle wurde 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.
20 Excel Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. 100% sicher.

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

9 Kommentare
  1. Andrew
    Andrew sagte:

    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

    Antworten
    • Denis
      Denis sagte:

      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

      Antworten
      • Andrew
        Andrew sagte:

        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

        Antworten
          • Andrew Scoins
            Andrew Scoins sagte:

            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

          • Denis
            Denis sagte:

            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 & ""

  2. Tobias
    Tobias sagte:

    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

    Antworten
  3. SK
    SK sagte:

    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.

    Antworten

Trackbacks & Pingbacks

  1. […] einem früheren Beitrag habe ich Ihnen gezeigt, wie Sie das aktuelle Datum in einer Liste ausfindig machen. In diesem […]

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.