Hallo BigBen!
herzlichen Dank für deine schnelle Antwort!
Das mit dem Ribbon, da überschätzt du mich :/
Ich kann grad nur Steuerelemente einfügen und mit Makros versehen, also Ribbon-Button und so Sachen bin ich nicht geübt, sorry.
Deinen Code habe ich nun in 'Diese Arbeitsmappe' eingegeben. Es ist eine Vorlagen-Datei mit Makros (Kalkulation.xltm). Ich habe den Pfad geändert, da hier ich kein Netzlaufwerk habe.
Jetzt gibts leider folgende Probleme:
a) beim schliessen/speichern wird nur die KD-NR abgefragt.
b) wenn ich die eingebe, schliesst es, aber ohne die Pj-Nr abzufragen.
c) wenn ich gar nix eingebe, schliesst es auch beim 2. Versuch komplett ohne Abfrage.
d) es speichert dann in einem komplett anderen Pfad, unter Vorschlag eines Dateinamens ( kalkulation1.xls)
e) wenn ich abbreche und wieder speichere/schliessen wähle, kommt gar keine Abfrage mehr und will wieder in o.g. Pfad speichern.
Const myPath = "c:\tmp\kalkulation\"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Static Instanz As Boolean
If Not Instanz Then
Instanz = True
Dim myForm As XlFileFormat
myForm = IIf(ActiveWorkbook.HasVBProject, xlOpenXMLWorkbookMacroEnabled, xlWorkbookNormal)
If Not CheckValide(Tabelle1.Cells(1, 5).Value, 5) Then
Tabelle1.Activate
Tabelle1.Cells(1, 5).Select
MsgBox "Bitte geben Sie eine 5-stellige Kundennummer ein.", vbCritical
Cancel = True
SaveAsUI = False
Exit Sub
ElseIf CheckValide(Tabelle1.Cells(1, 3).Value, 8) Then
Tabelle1.Activate
Tabelle1.Cells(1, 3).Select
MsgBox "Bitte geben Sie die PNr (8 Stellig ein.", vbCritical
Cancel = True
SaveAsUI = False
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myPath & Tabelle1.Cells(1, 3).Value, FileFormat:=myForm
'Debug.Print "Saved " & ActiveWorkbook.Saved
Cancel = ActiveWorkbook.Saved
SaveAsUI = Not Cancel
Application.DisplayAlerts = True
Instanz = False
End If
End Sub
Function CheckValide(Value As String, iLength As Integer) As Boolean
CheckValide = False
If IsNumeric(Value) Then
If Len(CStr(Val(Value))) = iLength Then
CheckValide = True
End If
End If
End Function
Was mache ich falsch?
Danke & Gruss,
Jürgen
|