Guten Abend zusammen
Eine Inputbox kann man ja auf verschiedene Weise behandeln:
1. was reinschreiben (oder auch nicht) und Abbrechen drücken
2. nichts reinschreiben und OK drücken
3. was reinschreiben und OK drücken
Im Lauf der Zeit habe ich gelernt:
Fall 1 heißt vbNullString
Fall 2 heißt ""
Fall 3 macht einen String
Stimmt das so? Vielleicht hab ich da was falsch verstanden, denn mein Code macht nicht, was er soll... Es soll Folgendes geschehen (ist die verkleinerte Mailversion einer großen Datei):
1. User drückt abbrechen - er bekommt Abbruchmeldung, Datei wird dann ohne weiteren Firlefanz geschlossen
2. User schreibt nix rein und drückt ok - er bekommt Mecker und Datei wird auch hier kommentarlos geschlossen
3. User schreibt was Erwünschtes oder Unerwünschtes rein - der Fall ist geklärt (dank eurer Hilfe)
Danke für'n Tip - Jörg
Private Sub Workbook_Open()
Dim i As Integer
Dim FileSaveNameAnbieter As Variant
Dim MldgFa As String
Dim strAnbieterName As String
MldgFa = "Bitte geben Sie Ihren Firmennamen in Kurzform ein" & vbLf & _
"z.B. statt Druckerei Meier GmbH && Co. KG einfach: Meier"
'Dies sorgt dafür, daß die Routinen beim Öffnen der Datei nicht eintreten,,
'wenn (wie in der Mailversion der Fall) die angesprochenen Blätter gar nicht vorhanden sind.
'Klappt nur mit deaktiviertem Option Explicit
If Me.Sheets.Count <= 3 Then
GoTo NameEingeben
Else
Tabelle103.Range("speich_Target1Veränd").Value = 0
ufNavigation.Show
Tabelle97.Select
mod_KdMaske.refreshCdoKd
mod_KdMaske.refreshCdoPtn
NameEingeben:
'Dies sorgt dafür, daß die Zwangsmaßnahmen für die Lieferanten nicht auch dann schon _
eintreten,
'wenn diese Datei als Ursprungsdatei bloß zu Arbeitszwecken geöffnet wird.
If Me.Sheets.Count > 3 Then
Exit Sub 'verhindert, daß msgBox auch bei Mutterdatei _
erscheint
Else
strAnbieterName = Application.InputBox(MldgFa, "Registrierung")
End If
If strAnbieterName = vbNullString Then
MsgBox "Benutzer hat die Aktion abgebrochen"
ThisWorkbook.Saved = True
ThisWorkbook.Close
ElseIf strAnbieterName = "" Then
MsgBox "Ohne Namen kann die Datei nicht verarbeitet werden"
ThisWorkbook.Saved = True
ThisWorkbook.Close
Else
For i = 1 To Len(strAnbieterName)
Select Case Asc(Mid(strAnbieterName, i, 1))
Case 65 To 90, 97 To 122, 196, 214, 220, 223, 228, 246, 252
Case Else:
MsgBox "Einen EINFACHEN Namen bitte! Vermeiden Sie Sonderzeichen usw."
GoTo NameEingeben
End Select
Next i
End If
ThisWorkbook.Worksheets("Formular").Range("C2").Value = strAnbieterName
MsgBox "Speichern Sie die Datei in einem Ordner Ihrer Wahl." & vbLf & _
"Verändern Sie NICHT den neuen Dateinamen, da sonst" & vbLf & _
"die Rücksendung Ihres Angebots nicht automatisch" & vbLf & _
"eingelesen werden kann und unberücksichtigt bleibt"
FileSaveNameAnbieter = Application.GetSaveAsFilename(InitialFileName:=(Left(ThisWorkbook. _
Name, Len(ThisWorkbook.Name) - 4)) & " " & strAnbieterName, FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für Ihr Angebot")
If FileSaveNameAnbieter <> False Then
ActiveWorkbook.SaveAs FileSaveNameAnbieter
Else
If MsgBox("Sie haben den Vorgang abgebrochen - ist das beabsichtigt?", vbYesNo) = vbYes _
Then
ThisWorkbook.Saved = True
ThisWorkbook.Close
Else
GoTo NameEingeben
End If
End If
End If
End Sub