Ah ok, verstehe, das vereinfacht den Teil, allerdings hab ich mir die Speicherfunktion jetzt für beides, die ".xlsx" und die ".xlsm" Version gebastelt und die jeweilige Endung in die strDareiname integriert, keine Ahnung ob das auch mit der 51 und 52 geht, werd ich aber mal ausprobieren, was das Speichern selbst angeht ist mein Plan das bei bereits existierende Dateien mit dem Namen wie bisher einfach nachgefragt werden soll, ob sie überschrieben werden dürfen, ich tendiere auch dazu, eine weitere Userform für den Fall zu entwickeln, die mir da drei Optionen liefert, "Ja", "Nein" und "Datei öffnen zum Vergleichen" mit dem Ziel den Anwender selbst die bereits existierende Datei an zu schauen und zu sehen, ob es nur eine ältere Version der selbst geschriebenen oder eine völlig andere Datei ist und er seine Nummer/seinen Dateinamen ändern muss. Aber eins nach dem anderen, erstmal muss das allgemeine funktionieren bevor ich Details einbaue, daher erstmal der Einzelschritttest, dazu Folgendes:
Code:
Function speicherDatei(ByVal wkb As Workbook, ByVal strDateiname As String) As Long
If save_name.Value = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
If save_path.Value = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
Else
If Right(save_path.Value, 1) <> "\" Then save_path.Value = save_path.Value & "\"
Sheets("Blatt 1").Unprotect
Sheets("Blatt 1").Range("DC12").Value = save_path.Value
Sheets("Blatt 1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
Rem MsgBox save_path.Value
wkb.SaveAs save_path.Value & strDateiname ', 52
MsgBox "Die Datei wurde unter " & save_path.Value & strDateiname & " gespeichert.", , "OK"
End If
End If
End Function
Er springt in der Funktion von "If save_name.Value = "" Then" direkt zum letzten "End If" üerspringt somit die gesamte Aktion des Speicherns, schließt diese somit gar nicht ab und führt entsprechend der False-Meldung weiter oben:
Code:
Private Sub work_in_progress_Click()
Dim strDateiname As String
strDateiname = save_name.Value & ".xlsm"
If speicherDatei(ActiveWorkbook, strDateiname) = True Then
Unload Me
End If
End Sub
Das nächste "End If" aus wobei ebenfalls alle dazwischen liegenden Befehle übersprungen werden (was in dem Fall auch richtig ist).
Problem ist, save_name.Value dürfte niemals leer sein wenn der Anwender nicht zuvor das entsprechende Textfeld leer macht, schließlich fülle ich es ja hier:
Code:
Private Sub UserForm_Initialize()
save_name.Value = "Schaltprogramm " & ActiveSheet.Range("C12").Value & ActiveSheet.Range("I12").Value & ActiveSheet.Range("O12").Value & ActiveSheet.Range("U12").Value & ActiveSheet.Range("AA12").Value & ActiveSheet.Range("AG12").Value & ActiveSheet.Range("AM12").Value & ActiveSheet.Range("AS12").Value & ActiveSheet.Range("AY12").Value & ActiveSheet.Range("BE12").Value
save_path.Value = Sheets("Blatt 1").Range("DC12").Value
End Sub
wo liegt also der Fehler?
...Ich glaub ich seh es grade... Ich probier mal was aus:
Code:
Function speicherDatei(ByVal wkb As Workbook, ByVal strDateiname As String) As Long
If save_name.Value = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
Else
If save_path.Value = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
Exit Function
Else
If Right(save_path.Value, 1) <> "\" Then save_path.Value = save_path.Value & "\"
Sheets("Blatt 1").Unprotect
Sheets("Blatt 1").Range("DC12").Value = save_path.Value
Sheets("Blatt 1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
Rem MsgBox save_path.Value
wkb.SaveAs save_path.Value & strDateiname ', 52
MsgBox "Die Datei wurde unter " & save_path.Value & strDateiname & " gespeichert.", , "OK"
End If
End If
End Function
Jetzt mit dem "Else" komm ich auf jeden Fall weiter, nur noch ein paar andere Kleinigkeiten die ich mir nochmal genauer anschauen muss.
xD
Ok soweit so Gut, jetzt tritt anscheinend tatsächlich das Problem auf welches ich mit einer dritten UserForm lösen will, die Speicher Funktion gibt mir False zurück und überspringt dadurch jetzt alles darauf Folgende. Heißt, ich muss jetzt damit anfangen, in der Funktion irgendwo den Part mit der Prüfung ob Datei bereits existiert und wenn dann UserForm 3 bla bla blubb... wird eine kleine Weile dauern, melde mich wieder.
Danke schonmal für all die Hilfe^^