Aus String Zeichen raussuchen (VBA)

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
Bild

Betrifft: Aus String Zeichen raussuchen (VBA)
von: Dante
Geschrieben am: 25.11.2003 17:05:12

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

Bild


Betrifft: AW: Aus String Zeichen raussuchen (VBA)
von: Reinhard
Geschrieben am: 25.11.2003 17:33:44

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



Bild


Betrifft: AW: Aus String Zeichen raussuchen (VBA)
von: Dante
Geschrieben am: 26.11.2003 08:40:21

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


Bild


Betrifft: AW: Aus String Zeichen raussuchen (VBA)
von: Reinhard
Geschrieben am: 26.11.2003 13:05:55

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


Bild


Betrifft: AW: Aus String Zeichen raussuchen (VBA)
von: Nayus
Geschrieben am: 25.11.2003 17:36:08

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



Bild


Betrifft: Ich versteh dein Problem nicht!!!
von: LotharR
Geschrieben am: 25.11.2003 17:42:03

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


Bild


Betrifft: AW: Ich versteh dein Problem nicht!!!
von: bernhard
Geschrieben am: 25.11.2003 20:20:12

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



Bild

Beiträge aus den Excel-Beispielen zum Thema " Aus String Zeichen raussuchen (VBA)"