ich beschäftige mich schon seit geraumer Zeit mit einer Programmierung eines umfangreichen Produktes, das diverse Dinge auf verschiedenen Tabellenblättern machen soll.
In Kurzform habe ich in dem Workbook 18 Reiter, die auch über Buttons ein und ausgeblendet werden können.
Bei einer vorherigen Version funktionierte das gleich beschriebene noch einwandfrei, doch nun wird immer ungewollt eine neue Mappe erstellt und Buttons und Zellbreiten werden auf der ursprünglichen Datei komplett verändert und verzogen!
Kurz zur Thematik:
Ich starte über einen Button "Konfigurator" eine Userform. Diese besitzt eine Multipage mit a) Maschinenkarte und b) Angebot, wo man verschiedene Druck- oder Speicheroptionen auswählen kann. Wenn ich die Seite "Angebot" wähle und alle möglichen Optionen auswähle und dann über den "Weiter"-CommandButton die Aktion starte, dann klappt alles einwandfrei.
Bei der Seite "Maschinenkarte" allerdings kann ich noch alles in der Userform auswählen und ändern, wenn ich dann aber auf den "Weiter"-CommandButtion klicke, dann lässt er mich noch den Dateinamen angeben und den Speicherort auswählen, aber dann passiert oben beschriebenes. Eine neue "Mappe1" mit den dort ausgewählten 5 Reitern wird erstellt und die anderen Reiter sind weg. Wie kann sowas passieren? Wo ist der Bug im Code?
Hier dazu mein Code von dem Weiter-Button:
Private Sub cmdWeiter_Click() 'Aktionen bei Click auf Weiter
Dim Inhalt As String
Dim i As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Select Case True
Case Me.mpgAuswahl.Value = 0 'Auswahl des Reiters Maschinenkarte in Multipage
If Worksheets(2).Visible = True Then 'Nur weitermachen, wenn alle Blätter der Maschinenkarte eingeblendet sind!
'Mindestens eine Druckoption muss angewählt sein
If Not (Me.optDrucken.Value Or Me.optPDF.Value Or Me.optDruckenMitPDF.Value) = True Then
MsgBox "Bitte wenigstens eine Druckoption wählen!" & Chr(13) & _
"Entscheidung zwischen PDF speichern, Drucken oder beides!", vbCritical, "Auswahl setzen" 'Ohne eine Auswahl geht es nicht!
Exit Sub
Else
'Zuerst soll nach Auswahl eines Optionsfeldes und der Checkboxen (min. eines und min. eine) der Array gefüllt werden
Call ArrayFüllen_chkMaschinenkarte 'Abrufen der angeklickten Checkboxes
'Prüfen, ob Druckbereich über anwählen von Checkbox geschehen ist, sonst Sub verlassen
If Join(Drucksammlung, "") = "" Then
MsgBox "Das geht nicht, bitte mindestens einen Haken im Druckbereich setzen!", vbCritical, "Was soll gedruckt oder gespeichert werden?" 'Prüfen, ob VariableBlätter leer, Eingabe erforderlich
Exit Sub 'mindestens eine Eingabe ist erforderlich
End If
'Fallunterscheidung, je nach Auswahl des Optionsbuttons
Select Case True
Case Me.optDrucken.Value
Call Maschinenkarte_NurDrucken
Case Me.optPDF.Value
Call Maschinenkarte_NurPDF
Case Me.optDruckenMitPDF.Value
Call Maschinenkarte_PDFundDrucken
End Select
End If
Else: MsgBox "So wird nur das Deckblatt abgebildet! Bitte alle Reiter der Maschinenkarte einblenden!", vbCritical, "Fehler bei Fortsetzung"
Exit Sub
End If
Case Me.mpgAuswahl.Value = 1 'Auswahl des Reiters Angebot in Multipage
If (Worksheets(12).Visible = True And UFDrucken.tgbSprachen.Value = True) _
Or (Worksheets(17).Visible = True And UFDrucken.tgbSprachen.Value = False) Then 'Nur weitermachen, wenn alle Blätter des deutschen oder des englischen Angebotes eingeblendet sind!
'Mindestens eine Angebotserstellung muss angewählt sein
If Not (Me.optDruckenMitSpeichernAngebot.Value Or Me.optNurDruckenAngebot.Value Or Me.optNurPDFAngebot.Value) = True Then
MsgBox "Bitte wenigstens eine Angebotserstellung wählen!" & Chr(13) & _
"Entscheidung zwischen PDF speichern, drucken oder beides!", vbCritical, "Auswahl erforderlich" 'Ohne eine Auswahl geht es nicht!
Exit Sub
Else
Call StandardAusblenden 'Abrufen des Status des ToggleButtons - Standardbeschreibungen eingeblendet oder ausgeblendet
Call LeereZeilenAusblenden 'Ausblenden aller leeren Zeilen, die die Optionscheckboxen erzeugen
Call KopfUndFuß 'Abrufen des Status des Druckpapiers und des Wunsches auf Kopf- und Fußzeile
'Zuerst soll nach Auswahl eines Optionsfeldes und der Checkboxen (min. eines und min. eine) der Array gefüllt werden
Call ArrayFüllen_chkAngebot 'Abrufen der angeklickten Checkboxes für Druckblätter
If Join(Drucksammlung2, "") = "" Then
MsgBox "Das geht nicht, bitte mindestens einen Haken im Druckbereich setzen!", vbCritical, "Was soll gedruckt oder gespeichert werden?" 'Prüfen, ob VariableBlätter leer, Eingabe erforderlich
Exit Sub 'mindestens eine Eingabe ist erforderlich
End If
'Fallunterscheidung, je nach Auswahl des Optionsbuttons
Select Case True
Case Me.optDruckenMitSpeichernAngebot.Value
Call Angebot_PDFundDrucken
Case Me.optNurDruckenAngebot.Value
Call Angebot_NurDrucken
Case Me.optNurPDFAngebot.Value
Call Angebot_NurPDF
End Select
End If
Else: MsgBox "So wird nichts abgebildet! Bitte alle Reiter des entsprechenden Angebotes (deutsch/ englisch) einblenden!", vbCritical, "Fehler bei Fortsetzung"
Exit Sub
End If
Select Case True 'ist das Blatt schon gesperrt?
Case Worksheets(12).ProtectContents 'Blatt 12 (deutsch) ist noch gesperrt - dann wurde englisch ausgewählt und muss gesperrt werden
'Optionen Blattschutz reaktivieren, wenn ausgeschaltet, weil leere Zeilen gelöscht wurden
If Worksheets(17).ProtectContents = True Then 'Wenn Schutz auf AEBestellumfang aktiviert ist, entsperren, sonst nicht (da kein Schutz vorhanden)
Worksheets(17).Unprotect ActiveWorkbook.Sheets("Passwort").Cells(1, 1)
End If
Worksheets(17).Rows.Hidden = False 'Ausgeblendete Zeilen auf Blatt "AEBestellumfang" wieder einblenden
Worksheets(17).Protect ActiveWorkbook.Sheets(Passwortblatt).Cells(1, 1) 'Blattschutz des Bestellumfangs englisch wieder aktivieren
Case Else 'Blatt 12 (deutsch) ist nicht mehr gesperrt - Blattschutz des Bestellumfangs deutsch wieder aktivieren
'Blattschutz reaktivieren, damit niemand etwas ungewollt ändern kann
'Optionen Blattschutz reaktivieren, wenn ausgeschaltet, weile leere Zeilen gelöscht wurden
If Worksheets(12).ProtectContents = True Then 'Wenn Schutz auf ADBestellumfang aktiviert ist, entsperren, sonst nicht (da kein Schutz vorhanden)
Worksheets(12).Unprotect ActiveWorkbook.Sheets("Passwort").Cells(1, 1)
End If
Worksheets(12).Rows.Hidden = False 'Ausgeblendete Zeilen auf Blatt "ADBestellumfang" wieder einblenden
Worksheets(12).Protect ActiveWorkbook.Sheets(Passwortblatt).Cells(1, 1)
End Select
End Select
Application.Cursor = xlNorthwestArrow
Worksheets(1).Select
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten
Unload Me
End Sub