Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilennummer aus Variable

Zeilennummer aus Variable
02.02.2021 13:02:04
Daniel
Hallo zusammen,
ich bin komplett neu hier und habe bisher auch nur ein paar Einsteiger-VBA Tutorials angeschaut.
An folgender Aufgabenstellung komme ich gerade nicht weiter:
Zuerst speichere ich das aktuelle Datum in der Variable Jetzt - das klappt
Danach möchte ich herausfinden in welcher Zeile in meinem Arbeitsblatt dieses Datum steht und diese Zahl in eine Variable schreiben. Leider bekomme ich mit der Funktion .Row einen Fehler beim Ausführen.
Am Ende möchte ich die Zeilennummer in einer Variablen stehen haben mit der ich weiterarbeiten kann.
Ich hoffe ihr versteht mein Aufgabenstellung.
Hier mein Code:
Sub Werte_anhaengen()
'Die Inhalte des Eingabebereichs an entsprechende Zeile mit heutigem Datum anhängen
Dim Jetzt As Date
Jetzt = CDate(Day(Now()) & "." & Month(Now()) & "." & Year(Now()))
MsgBox "Das heutige Datum lautet: " & Jetzt, vbYesNo + vbInformation, "Information"
Dim Bereich As Range
Dim Zelle As Range
Dim Zeile
Set Bereich = Sheets("Status").Columns("B")
Set Zelle = Bereich.Find(what:=Jetzt)
'Set Zeile = Zelle.Row
MsgBox "Das heutige Datum befindet sich in Zelle: " & Zelle.Address, vbYesNo + vbInformation, "Information"
' MsgBox "Das heutige Datum befindet sich in Zeile: " & Zeile, vbYesNo + vbInformation, "Information"
Herzlichen Dank für eure Unterstützung im Voraus.
VG Daniel
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nimm Match
02.02.2021 13:13:37
hary
Moin
Datum und find vertragen sich nicht so gut.
Sub Werte_anhaengen()
Dim a As Variant
Dim zeile As Long
a = Application.Match(CLng(Date), Columns(2), 0) '--2 ist SpalteB
If IsNumeric(a) Then
zeile = a
Else
MsgBox "Datum nicht vorhanden"
End If
End Sub

gruss hary
Anzeige
AW: nimm Match
02.02.2021 13:32:01
Daniel
Hallo Hary,
vielen Dank für Deine schnelle Hilfe!
Kannst Du mir auch gleich sagen wie ich zwei Zellinhalte aus zum Beispiel C10 und D10 in die entsprechende Zeile (welche wir gerade herausgefunden haben) kopieren kann? (die Spalte soll gleich bleiben)
Also zum Beispiel Zellinhalt aus C10 nach Czeile und D10 nach Dzeile. Ich hoffe das ist so verständlich...
Gruß
Daniel
Anzeige
AW: nimm Match
02.02.2021 13:45:33
hary
Moin
Wenn ich dich richtig verstanden habe!?
Sub Werte_anhaengen()
Dim a As Variant
Dim zeile As Long
a = Application.Match(CLng(Date), Columns(2), 0) '--2 ist SpalteB
If IsNumeric(a) Then
Cells(a, "C") = Range("C10")
Cells(a, "D") = Range("D10")
Else
MsgBox "Datum nicht vorhanden"
End If
End Sub

gruss hary
Anzeige
AW: nimm Match
02.02.2021 14:20:49
Daniel
Hervorragend! Das ging ja super schnell.
Vielen Dank und Gruß
Daniel
AW: Zeilennummer aus Variable
02.02.2021 13:21:25
Nepumuk
Hallo Daniel,
würde ich so machen:
Public Sub Werte_anhaengen()
    
    'Die Inhalte des Eingabebereichs an entsprechende Zeile mit heutigem Datum anhängen
    
    Dim vntReturn As Variant
    Dim objCell As Range
    
    MsgBox "Das heutige Datum lautet: " & Date, vbInformation, "Information"
    
    vntReturn = Application.Match(Clng(Date), Worksheets("Status").Columns(2), False)
    
    If IsError(vntReturn) Then
        MsgBox "Datum nicht gefunden.", vbExclamation, "Hinweis"
    Else
        Set objCell = Worksheets("Status").Cells(vntReturn, 2)
        MsgBox "Das heutige Datum befindet sich in Zelle: " & objCell.Address, vbInformation, "Information"
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeilennummer aus Variable
02.02.2021 13:33:24
Daniel
Hi
Zunächsteinmal solltest du angeben, ob du in den Formeltexten suchen willst oder in den Formelergebnissen LookIn:=xlvalues/xlformulas)
.Find kann beides.
Gibt man es nicht an, dann wird die Einstellung der letzten Suche verwendet, das kann irgendwas sein.
.Find mit Datum ist schwierig.
Sucht man in den Values, so muss der Suchwert dem angezeigten Text entsprechen.
Verwendet man das Standard-Datumsformat, so muss auch in einem deutschen Excel für den Suchtext das amerikanische Format verwendet werden.
Also sehr verwirrend.
Aber .Find brauch man nur, wenn man einen rechteckigen Suchbereich mit mehren Zeilen und mehreren Spalten durchsuchen will.
Steht alles in einer Zeile oder Spalte, dann kann man besser wie von Hary beschrieben mit Applucation.Match nach dem Ganzzahlwert des Datums suchen.
Aber auch das ist meistens nicht notwendig.
Liegt ein Kalender vor, in dem alle Datumswerte ohne Lücken in gleichmäßigen Abstand aufsteigend sortiert vorliegen, kann man die Position des gesuchten Datums auch berechnen nach dem Schema:
=(Gesuchtes_Datum - Start_Datum) * Abstand + Position_Start_Datum
Suchen mit Match muss man nur, wenn die Auflistung Lücken hat oder nicht sortiert ist oder die Abstände unregelmäßig sind.
Gruß Daniel
Anzeige
AW: Zeilennummer aus Variable
02.02.2021 13:33:24
Daniel
Hi
Zunächsteinmal solltest du angeben, ob du in den Formeltexten suchen willst oder in den Formelergebnissen LookIn:=xlvalues/xlformulas)
.Find kann beides.
Gibt man es nicht an, dann wird die Einstellung der letzten Suche verwendet, das kann irgendwas sein.
.Find mit Datum ist schwierig.
Sucht man in den Values, so muss der Suchwert dem angezeigten Text entsprechen.
Verwendet man das Standard-Datumsformat, so muss auch in einem deutschen Excel für den Suchtext das amerikanische Format verwendet werden.
Also sehr verwirrend.
Aber .Find brauch man nur, wenn man einen rechteckigen Suchbereich mit mehren Zeilen und mehreren Spalten durchsuchen will.
Steht alles in einer Zeile oder Spalte, dann kann man besser wie von Hary beschrieben mit Applucation.Match nach dem Ganzzahlwert des Datums suchen.
Aber auch das ist meistens nicht notwendig.
Liegt ein Kalender vor, in dem alle Datumswerte ohne Lücken in gleichmäßigen Abstand aufsteigend sortiert vorliegen, kann man die Position des gesuchten Datums auch berechnen nach dem Schema:
=(Gesuchtes_Datum - Start_Datum) * Abstand + Position_Start_Datum
Suchen mit Match muss man nur, wenn die Auflistung Lücken hat oder nicht sortiert ist oder die Abstände unregelmäßig sind.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilennummer aus Variable in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Aktuelles Datum speichern: Zuerst musst du das aktuelle Datum in einer Variable speichern. Dies kann mit der folgenden Zeile geschehen:

    Dim Jetzt As Date
    Jetzt = Date
  2. Zeilennummer finden: Um die Zeilennummer des Datums in einer bestimmten Spalte zu finden, kannst du die Application.Match-Funktion verwenden. Beispiel:

    Dim zeile As Long
    zeile = Application.Match(Jetzt, Worksheets("Status").Columns(2), 0)
  3. Überprüfen, ob das Datum gefunden wurde:

    If IsError(zeile) Then
       MsgBox "Datum nicht vorhanden"
    Else
       MsgBox "Das heutige Datum befindet sich in Zeile: " & zeile
    End If
  4. Verwenden der Zeilennummer: Nun kannst du die Zeilennummer in deiner Formel oder für weitere Berechnungen verwenden. Zum Beispiel:

    Worksheets("Status").Cells(zeile, "C") = Range("C10")
    Worksheets("Status").Cells(zeile, "D") = Range("D10")

Häufige Fehler und Lösungen

  • Fehler: Datum wird nicht gefunden: Wenn du die Fehlermeldung "Datum nicht vorhanden" erhältst, überprüfe, ob das Datum im richtigen Format vorliegt. Achte darauf, dass das Datum in der Excel-Tabelle im gleichen Format gespeichert ist, wie du es suchst.

  • Fehler bei der Variablenzuweisung: Stelle sicher, dass die Variable für die Zeilennummer als Long deklariert ist, um Überlauf-Fehler zu vermeiden.


Alternative Methoden

  • Verwendung von .Find: Du kannst auch die .Find-Methode verwenden, um die Zeilennummer zu ermitteln. Hier ist ein Beispiel:

    Dim Zelle As Range
    Set Zelle = Worksheets("Status").Columns(2).Find(what:=Jetzt)
    If Not Zelle Is Nothing Then
       MsgBox "Das Datum befindet sich in Zeile: " & Zelle.Row
    Else
       MsgBox "Datum nicht gefunden"
    End If
  • Direkte Berechnung der Zeilennummer: Wenn die Daten in der Spalte lückenlos sind und in aufsteigender Reihenfolge angeordnet sind, kannst du die Zeilennummer auch direkt berechnen:

    zeile = (Jetzt - Start_Datum) * Abstand + Position_Start_Datum

Praktische Beispiele

Hier ist ein vollständiges Beispiel für ein VBA-Skript, das die Zeilennummer des aktuellen Datums sucht und zwei Zellinhalte kopiert:

Sub Werte_anhaengen()
    Dim Jetzt As Date
    Dim zeile As Long
    Jetzt = Date

    zeile = Application.Match(Jetzt, Worksheets("Status").Columns(2), 0)

    If IsError(zeile) Then
        MsgBox "Datum nicht vorhanden"
    Else
        Worksheets("Status").Cells(zeile, "C") = Range("C10")
        Worksheets("Status").Cells(zeile, "D") = Range("D10")
        MsgBox "Daten erfolgreich übertragen!"
    End If
End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze immer Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.

  • Datum im richtigen Format: Achte darauf, dass das Datum im richtigen Format vorliegt. In Excel kann das amerikanische Datumsformat auftreten, wenn du mit Date arbeitest.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler und Abstürze zu vermeiden. Nutze On Error Resume Next und überprüfe Fehler mit If IsError(...).


FAQ: Häufige Fragen

1. Wie kann ich die Zeilennummer aus einer Zelle erhalten?
Du kannst die Zeilennummer einer Zelle mit Zelle.Row erhalten, nachdem du die Zelle gefunden hast.

2. Kann ich die Zeilennummer in einer Excel-Formel verwenden?
Ja, du kannst die Zeilennummer in Formeln verwenden, indem du sie in eine Variable speicherst und dann in deinen Berechnungen verwendest.

3. Was ist der Unterschied zwischen .Find und Application.Match?
.Find ist flexibler und kann in mehreren Spalten suchen, während Application.Match schneller ist, wenn du nur eine Spalte durchsuchen möchtest und die Werte sortiert sind.

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