Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
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
Inhaltsverzeichnis

Mal wieder unverständlich

Mal wieder unverständlich
Ralph
Wie schon vor ein paar Tagen mit einem unlogischen Fall, den ich hier hilfesuchend schilderte, habe ich wieder ein Problem, welches ich nicht verstehe. Ich arbeite das große MSPress Buch zur Programmierung in Excel durch und auf Seite 105 geht es um die Funktion IsDate, mit der auf den Datentyp Date geprüft wird. Die Prozedur sieht genau so aus:
Sub CheckTyp()
Dim datBirthday As Date
datBirthday = "05.09.1968"
If IsDate(datBirthday) Then MsgBox IsDate(datBirthday)
Else: MsgBox IsDate(datBirthday)
End If
End Sub

Beim Ausführen bekomme ich jedesmal einen Else without If-Fehler, obwohl doch das If da klar und deutlich steht und auch in blau geschrieben ist und damit doch wohl als Schlüsselwort erkannt wird. Der Doppelpunkt nach dem Else wird immer wieder automatisch gesetzt, nachdem das erste Mal diese Fehlermeldung kommt. Er sollte eigentlich nicht sein und steht auch nicht im Buch. Lässt sich aber nicht mehr entfernen. Mit solchen unverständlichen Dingen wird einem das Erlernen von VBA nicht wirklich einfach gemacht. Hat jemand vielleicht eine Erklärung ? Ich wäre sehr dankbar. Gruß aus Bremen, Ralph

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mal wieder unverständlich
11.07.2011 20:09:37
Martin
Hallo Ralph,
bei "IF" schreibst du entweder alles in eine Zeile, also:
If IsDate(datBirthday) Then MsgBox IsDate(datBirthday) Else MsgBox IsDate(datBirthday)
... und du musst kein "END IF" setzen oder du schreibst alles ein einzelne Zeilen:

Sub CheckTyp()
Dim datBirthday As Date
datBirthday = "05.09.1968"
If IsDate(datBirthday) Then
MsgBox IsDate(datBirthday)
Else: MsgBox IsDate(datBirthday)
End If
End Sub
Aber in deinem Beispiel kann Excel mit der "ELSE-Zeile" und der "END IF"-Zeile nichts mehr anfangen, weil in der IF-Zeile auch nach dem THEN bereits etwas steht.
Viele Grüße
Martin
Anzeige
AW: Mal wieder unverständlich
12.07.2011 01:02:52
Ralph
Vielen, lieben Dank. Gibt es dafür eine logische Begründung ? Denn den Wenn / Sonst-Sinn würde ja auch das untereinander Geschriebene nicht zerstören.
Gruß
Ralph
AW: Mal wieder unverständlich
11.07.2011 20:10:58
Hajo_Zi
Hallo,
den Teil ab Else löschen. End Sub bleibt stehen.
Du hast was hinter Then geschrieben.

AW: Mal wieder unverständlich
12.07.2011 00:59:56
Ralph
Hallo Hajo
Danke für die Antwort. Also wieder was gelernt. Hinter dem Then darf in der selben Zeile nichts stehen, wenn man Else nutzen will. Ergibt für mich als Laie zwar keinen Sinn, denn Else ist ja noch immer nur für den Fall, dass Then nicht zutrifft zuständig, aber gut.
Vielen Dank
Ralph
Anzeige
Du ziehst falsche Schlussfolgerungen,...
12.07.2011 16:19:32
Luc:-?
…Ralph,
es gibt 2 verschiedene Syntaxformen für If … Then … Else-Konstrukte, 1zeilig und mehrzeilig, aber nicht beides miteinander vermischt. Es geht also auch …
If A Then B Else C ⇒ nach der 1-Zeilen-Syntax (auch mit Trennstrichen _ für Fortsetzungszeilen) → wird aber nur von MS-Produkten verstanden!
Mehrzeilig wäre das…
If A Then
    B
Else: C
End If

Gruß Luc :-?
AW: Du ziehst falsche Schlussfolgerungen,...
12.07.2011 23:52:58
Ralph
ok... Danke
AW: Mal wieder unverständlich
11.07.2011 20:44:49
fcs
Hallo Ralph,
alles wesentliche zur If..Then..Else...End If wurde ja schon geschrieben.
Das Beispiel ist bezüglich der Variablendeklaration zum Lernen/Testen nicht gut gewählt.
Die Variable "datBirthday" sollte als Variant oder String deklariert werden. Dann kann man beliebige Eingaben auf ("Ist-Datum?) prüfen.
Mit dem Beispiel tritt eine Fehlermeldung (Typ unverträglich) auf wen du versuchst ein ungültiges Datum zu testen.
Gruß
Franz
Sub CheckTyp()
Dim datBirthday As Date
datBirthday = "17.03.1968"
If IsDate(datBirthday) Then
MsgBox IsDate(datBirthday)
Else
MsgBox IsDate(datBirthday)
End If
End Sub
Sub CheckTyp2()
Dim datBirthday As String
datBirthday = "33.09.1968"
If IsDate(datBirthday) Then MsgBox IsDate(datBirthday) _
Else MsgBox IsDate(datBirthday)
End Sub

Anzeige
AW: Mal wieder unverständlich
12.07.2011 01:01:29
Ralph
Ok. Danke für den weiteren Tip

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige