Habe ein Problem mit einer Abfarage lt. Anhang.
Was mach ich da falsch möchte drei mal ein Loop aber es geht nicht!
https://www.herber.de/bbs/user/51772.xls
Bitte um Hilfe
Gruss
Leitz G.
If strEingabeKorrekt = MsgBox("Ist die Eingabe korrekt? : " & vntInput, vbYesNo + vbQuestion) = vbNo Then
hat nach THEN keinen weiteren Befehl mehr, damit gilt der IF-Block bist zum nächsten END IF.
damit ist auch das LOOP darunter innerhalb des IF-Blocks und somit Überschneiden sich DO-LOOP und IF-End IF und das funktioniert nicht.
dh. du hast dir in etwa sowas gebaut:
Do
IF...Then
Loop
End if
aber das funktioniert nicht.
korrekt wäre so:
Do
If...Then
End if
Loop
oder:
If...Then
Do
Loop
Eind if
gewöhnde dir an, bei der Codeerstellenung alles was innerhalb Schleifen (DO-LOOP, FOR-NEXT) und Bedingungen (IF THEN - ELSE - END IF, SELECT CASE) steht, mit der Tab-Taste einzurücken, damit du die Strukturen und etwaige Fehler leichter erkennst.
dein Code (nicht korrigiert) würde dann so aussehen:
Worksheets.Add After:=Worksheets(Worksheets.Count)
Dim strPräfix As String
Dim vntInput As Variant
Dim strEingabeKorrekt As String
Dim strSheetname As String
Dim Wks As Worksheet
Dim WksName As String
strPräfix = "Test"
Do
Do
vntInput = InputBox("Monat und Jahr eingeben für Tabellenblattnamen! Format: MMJJ" _
, "Eingabe")
If vntInput Like "####" Then Exit Do
If vntInput "" Then MsgBox "Eingabe ist nicht korrekt!", vbCritical, "Fehler"
Loop
If strEingabeKorrekt = MsgBox("Ist die Eingabe korrekt? : " & vntInput, vbYesNo + _
vbQuestion) = vbNo Then 'hier ist der Fehler
Loop
strSheetname = (strPräfix & vntInput)
For Each Wks In Worksheets
If Wks.Name = strSheetname Then
WksName = Wks.Name
End If
Next
If WksName = strSheetname Then
MsgBox "Die Datei enthält bereits ein Tabellenblatt mit diesen Namen Bitte überprüfen", _
vbCritical, "Fehler"
End If
ActiveSheet.Name = (strSheetname)
End Sub
Gruß, Daniel