Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
340to344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
340to344
340to344
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aus String Zeichen raussuchen (VBA)

Aus String Zeichen raussuchen (VBA)
25.11.2003 17:05:12
Dante
Hallo Leute,

ich habe heute ein riesen Datumsproblem (siehe heutige Forumsliste) gehabt und krieg es einfach nicht gelöst.
Darum will ich es jetzt umgehen, aber dazu brauche ich leider nochmal Eure Hilfe.

Aufgabe Datum auf Richtigkeit überprüfen, d.h. 35.16.03 soll als FALSCH erkannt werden. (isDate() funktioniert leider nicht...)

Dazu brauche ich:
1) nimm Wert aus Zelle und wandle ihn in einen String um
2) lege Variablen int_tag, int_monat, int_jahr an
3) lies aus dem String alle Zeichen vor dem ersten "." und speichere sie in int_tag
4) lies aus dem String alle Zeichen zwischen den Punkten und speichere sie in int_monat
5) lies aus dem String alle Zeichen nach dem zweiten "." und speichere sie in int_jahr

Mit diesen int-Variablen kann ich mir dann eine Plausibilitätsabfrage basteln.
Hilfe von Euch bräuchte ich beim Auslesen aus dem String, da hab ich nämlich keine Ahnung, wie das funktioniert?!

Kann mir jemand hierbei helfen?

Danke .... Dante

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus String Zeichen raussuchen (VBA)
25.11.2003 17:33:44
Reinhard
Hallo Dante,
nimm das folgende Makro, es erwartet das Datum in A1.
Gruß
Reinhard
ps: Dein alter Thread ist mir zulang geworden um da nachzuschauen *gg
wo steht bzw. woher kommt denn 35.16.03? Steht das in einer Zelle, Inputbox?
Soll es mit Excel oder mit VBA überprüft werden?


Sub test()
Dim Wort As String
Dim intTag As Integer, intMonat As Integer, intJahr As Integer
Wort = Worksheets("Tabelle1").Range("a1").Value
pos1 = InStr(Wort, ".") 'Position erster Punkt
pos2 = InStr(pos1 + 1, Wort, ".") 'Position zweiter Punkt
intTag = Left(Wort, pos1 - 1)
intMonat = Mid(Wort, pos1 + 1, pos2 - pos1)
intJahr = Right(Wort, Len(Wort) - pos2)
MsgBox "Tag: " & intTag & " Monat: " & intMonat & " Jahr: " & intJahr
End Sub

Anzeige
AW: Aus String Zeichen raussuchen (VBA)
26.11.2003 08:40:21
Dante
Guten Morgen Reinhard,

danke für die tolle Hilfe - habe nur noch eine Frage: In Deinem Code ist Wort als String definiert, was ist aber wenn in der Zelle ein richtiges Datum steht?!
Muss ich diese Zeile:
Wort = Worksheets("Tabelle1").Range("a1").Value
so ändern, damit jeder mögliche Wert in der Zelle überprüft wird:
Wort = CStr(Worksheets("Tabelle1").Range("a1").Value)
?

Danke für alles,
Dante
AW: Aus String Zeichen raussuchen (VBA)
26.11.2003 13:05:55
Reinhard
Hi Dante,
beantworte doch bitte meine Fragen.
Bei Tests (xl2000,win98) trennt das Makro alles in die drei Variablen auf, egal ob das Datum richtig (=Datum) oder falsch (=Text) ist.
Gruß
Reinhard
Anzeige
AW: Aus String Zeichen raussuchen (VBA)
25.11.2003 17:36:08
Nayus
Hi,
hier ein kleiner Parser. Was Du in Prüfung machen willst muss natürlich noch rein.
Viel Erfolg,
Nayus


Function checkDate(pval As Variant) As Boolean
Application.Volatile
Dim int_tag As Integer, int_monat As Integer, int_jahr As Integer
Dim pos1 As Integer, pos2 As Integer
pos1 = CInt(InStr(1, pval, ".", 1))
pos2 = CInt(InStr(pos1, pval, ".", 1)) + pos1
int_tag = CInt(Mid(pval, 1, pos1 - 1))
int_monat = CInt(Mid(pval, pos1 + 1, pos2 - pos1 - 1))
int_jahr = CInt(Mid(pval, pos2 + 1))
'prüfe was du geparst hast
MsgBox CStr(int_tag) & "*" & CStr(int_monat) & "*" & CStr(int_jahr)
'... hier folgt die weitere Prüfung
checkDate = True
End Function

Anzeige
Ich versteh dein Problem nicht!!!
25.11.2003 17:42:03
LotharR
Hallo Dante!

Angenommen in A1 soll der Anwender ein "gültiges" Datum eingeben:
Ist es gültig, ist es auch im Datumsformat von Excel, ist es ungültig wird es als Text erkannt, ergo könnte auf Text geprüft werden:

Option Explicit


Sub datum_pruefen()
Dim date1 As String
date1 = Range("A1").Value
If IsDate(date1) = False Then
MsgBox "Datum ist falsch!"
'***hier dann ich die Fehlerbehandlung springen***
End If
End Sub


Also bei mir funktioniert es!
Gruss
Lothar
AW: Ich versteh dein Problem nicht!!!
25.11.2003 20:20:12
bernhard
hallo lotharr,

probier mal in a1 den string: "32-12-03" .....?????

hätte da eine andere variante:

Sub dat()
Dim a, b As Integer, stdtxt As String
a = 1: b = 1: stdtxt = " kein "
If WorksheetFunction.IsNumber(Cells(a, b)) Then stdtxt = " ein "
MsgBox "Zelle " & UCase(Chr(64 + b)) & a & " ist" & stdtxt & "Datum!"
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Infobox zum Thema

EXCEL - VBA: Tag, Monat und Jahr aus Datum lesen


Inhaltsverzeichnis


Problemdefinition

Der Benutzer möchte einen Wert aus einer Zelle nehmen und diesen in einen String umwandeln. Anschließend sollen die Werte für Tag, Monat und Jahr aus diesem String extrahiert und in entsprechenden Variablen gespeichert werden.


Lösungsansatz

Der erste Schritt ist, den Wert aus der Zelle in einen String umzuwandeln. Anschließend können die Werte für Tag, Monat und Jahr aus diesem String extrahiert werden, indem die Split-Funktion verwendet wird, die einen String anhand eines bestimmten Trennzeichens in ein Array teilt.


Code

Hier ist ein Beispielcode, der dies tut:

Sub ExtractDateParts()
    Dim strDate As String
    Dim intTag As Integer
    Dim intMonat As Integer
    Dim intJahr As Integer
    Dim arrDateParts() As String

    ' Schritt 1: Wert aus Zelle in String umwandeln
    strDate = CStr(Range("A1").Value)

    ' Schritt 2: Variablen anlegen
    ' (automatisch initialisiert auf 0)

    ' Schritt 3-5: Werte aus String extrahieren
    arrDateParts = Split(strDate, ".")
    intTag = arrDateParts(0)
    intMonat = arrDateParts(1)
    intJahr = arrDateParts(2)

    ' Ausgabe der Werte
    Debug.Print "Tag: " & intTag
    Debug.Print "Monat: " & intMonat
    Debug.Print "Jahr: " & intJahr
End Sub

Verwendung der Lösung

Die ExtractDateParts-Prozedur kann direkt in einem VBA-Modul eingefügt werden. Um die Prozedur auszuführen, stelle sicher, dass in der Zelle A1 ein Datum im Format "TT.MM.JJJJ" steht und führe die ExtractDateParts-Prozedur aus.


Zusammenfassung

Der VBA-Code extrahiert die Tag-, Monat- und Jahrwerte aus einem String und speichert sie in entsprechenden Variablen. Der Split-Funktion wird verwendet, um den String in ein Array zu teilen, und die einzelnen Teile des Arrays werden dann den entsprechenden Variablen zugeordnet.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige