Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

VBA: OptionButton (With/If/Case)


Betrifft: VBA: OptionButton (With/If/Case) von: Charly
Geschrieben am: 19.06.2019 05:11:00

Hallo Forum,

ich habe ein Problem mit OptionButton.
Mappe(1) mit UF:
OptionButtonen
ComboBox(RowSource hinterlegt)
TextBoxen, nur zur Darstellung von Inhalten, keine Schreiben
CommandButto´s
Mappe(3) ist eine Vorlage, für die TextBox/Inhalt

Wenn Ich in Mappe(1) per Button(1) meine UF Öffne u. per ComboBox einen Wert wähle werden daraufhin mehrere Mappen geöffnet u. die UF ließt festgelegte Werte aus den Mappen in die TextBoxen.
Dann wird per Button2 eine weitere Mappe(3) geöffnet "die Vorlage", alle Inhalte der TextBoxen werden hier zusammengefast u. in dafür vorgesehene Zellen eingetragen.
Über Button3 wird gespeichert Pfad u. Name der Datei sind im Code des Button3 hinterlegt.

Mein Problem,
Ich möchte über OptionButton´s eine Art vorauswall des Speicherpfades festlegen.
OB1 = Ordner(Gruppe1) in diesem sind OB3 = Ordner(1), OB4 = Ordner(2), OB5 = Ordner(3)
OB2 = Ordner(Gruppe2) in diesem sind OB3 = Ordner(1), OB4 = Ordner(2), OB5 = Ordner(3)

Meine alten Codezeilen ohne OptionButton funktioniert, habe Ich aus dem Forum u. etwas Angepasst mit With u. If Schleife
http://www.office-loesung.de/ftopic500064_0_0_asc.php

Mit den OptionButton kommt jetzt eine Fehlermeldung:
Fehler beim Kompilieren
Anweisungen und Zeilenmarken zwischen Select Case und erstem Vorkommen von Case unzulässig.

Wie od. was muss Ich am Code ändern um mein Vorhaben umzusetzen.

Hier mein Code:

Private Sub CommandButton1_Click()

    Dim Datei As String, Verzeichnis As String, SaveDummy As Variant, wkb As Workbook
    
    'Mappe ist bereits per UF geöffnet worden
    Workbooks("Mappe(3).xlsx").Sheets("Tabelle1").Activate
    Range("A1").Select

    With Speichern
        If Me.OptionButton1 = True Then
            Select Case Me.OptionButton1
                If Me.OptionButton1 = True Then
                    Select Case Me.OptionButton3
                        Verzeichnis = "P:\Gruppe1\1\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                ElseIf Me.OptionButton1 = True Then
                    Select Case Me.OptionButton4
                        Verzeichnis = "P:\Gruppe1\2\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                ElseIf Me.OptionButton1 = True Then
                    Select Case Me.OptionButton5
                        Verzeichnis = "P:\Gruppe1\3\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                Else
                MsgBox "Wählen Sie eine Option (Ordner)!"
                End If
            End Select
        ElseIf Me.OptionButton2 = True Then
            Select Case Me.OptionButton2
                If Me.OptionButton2 = True Then
                    Select Case Me.OptionButton3
                        Verzeichnis = "P:\Gruppe2\1\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                ElseIf Me.OptionButton2 = True Then
                    Select Case Me.OptionButton4
                        Verzeichnis = "P:\Gruppe2\2\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                ElseIf Me.OptionButton2 = True Then
                    Select Case Me.OptionButton5
                        Verzeichnis = "P:\Gruppe2\3\"
                        Datei = TB_Dateiname.Value & ".xlsx"
                        SaveDummy = SpeichernUnter(Verzeichnis & Datei)
                        If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
                        Range("A1").Select
                        Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
                    End Select
                Else
                MsgBox "Wählen Sie eine Option (Ordner)!"
                End If
            End Select
        Else
            MsgBox "Wählen Sie eine Option (Grund)!"
        End If
    End With
    
    For Each wkb In Workbooks
        If (wkb.Name <> ActiveWorkbook.Name) And (wkb.Name <> ThisWorkbook.Name) Then
        Application.DisplayAlerts = False
        wkb.Close savechanges:=False
        Application.DisplayAlerts = True
    End If
    Next wkb

End Sub

    Function SpeichernUnter(VorgabeName As String) As Variant
    SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, _
    Filefilter:=" _Excel Dateien (*.xlsx),*.xls*", _
    FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
    End Function

Gruß Charly

  

Betrifft: AW: VBA: OptionButton (With/If/Case) von: Werner
Geschrieben am: 19.06.2019 06:09:24

Hallo Charly,

ein OptionButton kennt ja nur die Zustände True/False, da macht ein Select Case meiner Meinung nach keinen Sinn.

Private Sub CommandButton1_Click()
Dim Datei As String, Verzeichnis As String, SaveDummy As Variant, wkb As Workbook
              
'Mappe ist bereits per UF geöffnet worden
Workbooks("Mappe(3).xlsx").Sheets("Tabelle1").Activate
Range("A1").Select

With Speichern
    If Me.OptionButton1 Then
        If Me.OptionButton3 Then
            Verzeichnis = "P:\Gruppe1\1\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        ElseIf Me.OptionButton4 Then
            Verzeichnis = "P:\Gruppe1\2\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        ElseIf Me.OptionButton5 Then
            Verzeichnis = "P:\Gruppe1\3\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        Else
            MsgBox "Wählen Sie eine Option (Ordner)!"
        End If
    ElseIf Me.OptionButton2 Then
        If Me.OptionButton3 Then
            Verzeichnis = "P:\Gruppe2\1\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        ElseIf Me.OptionButton4 Then
            Verzeichnis = "P:\Gruppe2\2\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        ElseIf Me.OptionButton5 Then
            Verzeichnis = "P:\Gruppe2\3\"
            Datei = TB_Dateiname.Value & ".xlsx"
            SaveDummy = SpeichernUnter(Verzeichnis & Datei)
            If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy
            Range("A1").Select
            Workbooks("Mappe(1).xlsm").Sheets("Tabelle1").Activate
        Else
            MsgBox "Wählen Sie eine Option (Ordner)!"
        End If
    Else
        MsgBox "Wählen Sie eine Option (Grund)!"
    End If
End With

For Each wkb In Workbooks
    If (wkb.Name <> ActiveWorkbook.Name) And (wkb.Name <> ThisWorkbook.Name) Then
        wkb.Close savechanges:=False
    End If
Next wkb
End Sub
Keine Ahnung was "Speichern" (With Speichern) ist. Die Variable ist nirgendwo deklariert.
Zudem würde ich mal meinen, dass die ständige Aktiviererei der Workbooks unnötig ist.

Gruß Werner


  

Betrifft: AW: VBA: OptionButton (With/If/Case) von: Charly
Geschrieben am: 19.06.2019 06:48:16

Morgen Werner,

sorry für die Verwirrung, wenn das with "Speichern" nicht sein muss kann dann auch natürlich weg. dachte das Ich so die if schlife beginne.

Um auf das Aktivieren zu kommen, diese Zeilen habe Ich eingefügt um immer auf der ersten Mappe zurück zu kehren. Deklariere Ich die Mappe nicht als aktive so bleibt bei mir die UF immer bei der letzten Mappe stehen die Ich vorher per UF aufgerufen habe.

Gruß Charly


  

Betrifft: AW: VBA: OptionButton (With/If/Case) von: Hajo_Zi
Geschrieben am: 19.06.2019 06:57:48

Hallo Charly,

es gibt keine Zeile die mit "." beginnt, warum dann With?

frage jemand der neben Dir sitzt der sieht die Datei.
Die meisten hier sehen Sie nicht.
Da Sie nicht auf Deinen Rechner schauen.
Vielleicht sollte die Datei verlinkt werden?

Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

GrußformelHomepage

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.


  

Betrifft: AW: VBA: OptionButton (With/If/Case) von: Charly
Geschrieben am: 19.06.2019 08:03:47

Morgen Hajo_Zi,

das mit dem with hat sich erledigt...

Dieser Code ist Teil einer UserForm in meiner Hauptmappe, zu denen sich noch weiter 8 neben Mappen dazu gesellen.
Sozusagen ein Projekt an dem Ich schon länger dran Bastle.

Gruß Charly


  

Betrifft: AW: VBA: OptionButton (With/If/Case)Close von: Charly
Geschrieben am: 20.06.2019 00:07:48

Geschlossen.


Beiträge aus dem Excel-Forum zum Thema "VBA: OptionButton (With/If/Case)"