Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum in Range-Variable eingeben

Forumthread: Datum in Range-Variable eingeben

Datum in Range-Variable eingeben
19.09.2016 14:53:17
Franz
Hallo Fachleute,
ich hab eine VBA-Frage:
ich habe: ein Datum als Datum: dateDatum (as Date)
ich brauche: dieses Datum in einer Range-Variablen: rngDatum (as Range) (für eine "For Each rngDatum In ..."-Schleife.
set rngDatum = dateDatum geht nicht
ich behelfe mir: ich schreib das Datum in eine Zelle - und lese das dann in die Range-Variable ein:
Range("I5") = dateDatum
set rngDatum = Range("I5")
Damit geht es und alles Weitere funktioniert wie es soll
Kann ich den Schritt, das Datum in eine Zelle zu schreiben und wieder auszulesen umgehen? Und das Datum direkt an die Range-Variable übergeben?
Danke schonmal für Eure Hilfe
Grüße
Franz
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum in Range-Variable eingeben
19.09.2016 15:50:46
UweD
zeig uns doch mal das gesamte Makro..
erstmal beendet
19.09.2016 16:27:29
Franz
Hallo Uwe,
danke, dass Du mir helfen willst, aber genau das hab ich befürchtet. Das ganze ist nämlich ziemlich verschachtelt, und ich bin leider nicht in der Lage da so aufzudröseln, dass es verständlich bleibt, dazu bin ich nicht gut genug.
Ich werd erstmal schaun, ob ich noch ne Möglichkeit finde. Beenden wir's erstmal.
Danke und Grüße
Franz
Anzeige
AW: Datum in Range-Variable eingeben
19.09.2016 16:55:40
ChrisL
Hi Franz
Mit Beispieldatei könnte man konkreter helfen, aber trotzdem mal ein Hinweis.
Dein rngDatum enthält eine Range, unabhängig davon, was der Zelleninhalt ist. rngDatum ist und bleibt eine Range, auch wenn du vorher ein Datum in die Zelle schreibst.
Wenn du rngDatum anschliessend sowieso in einer Schleife verwendest, dann musst du diese vorgängig auch nicht definieren.
z.B.
Sub t()
Dim rng As Range
Set rng = Range("A1")
For Each rng In Range("B1:B10")
MsgBox rng.Address
Next rng
End Sub
Wie du siehst, wird B1:B10 Zelle für Zelle durchlaufen. Es ist völlig egal, mit welchem Wert/Zelle rng vorher definiert wurde d.h. die Zeile "Set rng =..." kann weggelassen werden.
cu
Chris
Anzeige
AW: Datum in Range-Variable eingeben
19.09.2016 17:27:29
Franz
Hallo Chris,
danke das hilft mir schon weiter! Ich hab inzwischen weitergebastelt und bin bei
"If rngDatum = Range("I5") Then"
angekommen. Das "Set rng =..." hat sich schon erübrigt.
Aber mit Deinem Hinweis hab ich gemerkt, dass auch das hier
"If rngDatum = dateDatum Then"
funktioniert. Damit kann ich das Schreiben des Datum in eine Zelle schon mal weglassen!
Danke und Grüße
Franz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Datum in Range-Variable eingeben


Schritt-für-Schritt-Anleitung

Um ein Datum direkt in einer Range-Variablen in Excel VBA zu verwenden, folge diesen Schritten:

  1. Definiere deine Variablen:

    Dim dateDatum As Date
    Dim rngDatum As Range
  2. Setze das Datum:

    dateDatum = #10/01/2023# ' Beispiel-Datum
  3. Verwende das Datum in einer Schleife: Du kannst das Datum direkt vergleichen, ohne es vorher in eine Zelle zu schreiben:

    For Each rngDatum In Range("B1:B10")
       If rngDatum.Value = dateDatum Then
           MsgBox "Datum gefunden in " & rngDatum.Address
       End If
    Next rngDatum

Häufige Fehler und Lösungen

  • Fehler: "Typenkonflikt"

    • Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind und dass du das Datum im richtigen Format verwendest.
  • Fehler: "Object variable or With block variable not set"

    • Lösung: Überprüfe, ob du die Range-Variable richtig gesetzt hast. Ein Beispiel für die Zuweisung könnte so aussehen:
      Set rngDatum = Range("A1")

Alternative Methoden

Eine andere Möglichkeit, mit Datum und Range-Variablen in Excel VBA umzugehen, ist die Verwendung von Arrays. So kannst du Daten effizient verarbeiten, ohne sie in Zellen zu speichern.

Dim datesArray As Variant
datesArray = Array(#10/01/2023#, #10/02/2023#, #10/03/2023#)

For i = LBound(datesArray) To UBound(datesArray)
    If datesArray(i) = dateDatum Then
        MsgBox "Datum gefunden: " & datesArray(i)
    End If
Next i

Praktische Beispiele

Hier sind zwei praktische Beispiele, die zeigen, wie man ein Datum in einer Range-Variable verwendet:

  1. Durchlauf durch eine Range:

    Sub CheckDates()
       Dim dateDatum As Date
       dateDatum = #10/01/2023#
       Dim rng As Range
    
       For Each rng In Range("B1:B10")
           If rng.Value = dateDatum Then
               MsgBox "Datum gefunden in " & rng.Address
           End If
       Next rng
    End Sub
  2. Verwendung von Set:

    Sub SetRangeExample()
       Dim rngDatum As Range
       Set rngDatum = Range("C1:C10")
    
       For Each cell In rngDatum
           If cell.Value = #10/01/2023# Then
               cell.Interior.Color = RGB(255, 255, 0) ' Gelbe Farbe
           End If
       Next cell
    End Sub

Tipps für Profis

  • Nutze Excel Shortcuts, um Zellen schnell zu verbinden oder zu formatieren.
  • Wenn du oft mit rng vba arbeitest, erstelle dir eigene Funktionen, um den Code übersichtlicher zu gestalten.
  • Überlege, ob du die Set rng Anweisung in deinem Code weglassen kannst, um den Code zu vereinfachen.

FAQ: Häufige Fragen

1. Wie kann ich ein Datum in eine Range-Variable setzen, ohne es in eine Zelle zu schreiben?
Du kannst das Datum direkt vergleichen, wie im Beispiel gezeigt. Es ist nicht notwendig, es in eine Zelle zu schreiben.

2. Was ist der Unterschied zwischen Set rng und For Each rng In?
Set rng wird verwendet, um eine Range-Variable zu initialisieren, während For Each rng In dazu dient, durch jede Zelle in einer angegebenen Range zu iterieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige