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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

Prozedurname aus Variable

Betrifft: Prozedurname aus Variable von: Specke
Geschrieben am: 10.01.2008 08:22:15

Hallo Experten,

ich habe eine Userform mit 10 OptionButtons.
Bisher hatte ich es so, dass ich jeden OptionButton abgefragt habe, ob er aktiv ist und dann die entsprechende Prozedur aufgerufen habe (if-then).
Da die Prozeduren fast genauso heißen wie die OptionButton (links müssen nur 4 Stellen abgeschnitten werden), wollte ich es vereinfachen.

Mit einer For Each-Schleife möchte ich prüfen, welcher Button aktiv ist und aus dem Namen den Namen der Prozedur filtern - das habe ich schon.

Wie kann ich nun mit der Variablen (im moment als String deklariert) die Prozedur aufrufen. Ich bekomme die Fehlermeldung "Prozedur anstelle einer Variablen erwartet".

Ich hoffe, es ist verständlich, was ich möchte.

Gruß
Specke

PS: Oder kann man es anders verkürzen?

  

Betrifft: AW: Prozedurname aus Variable von: Renee
Geschrieben am: 10.01.2008 08:44:05

Hi Specke,

Wenn du schon "den Namen der Prozedur filtern - das habe ich schon. " Code hast, warum zeigst Du uns den nicht ?

GreetZ Renée


  

Betrifft: AW: Prozedurname aus Variable von: Specke
Geschrieben am: 10.01.2008 08:54:37

Hallo Renée,

weil ich nicht dachte, dass das zur Beantwortung der Frage hilfreich ist.

Aber bitte:

Option Explicit
Dim OptButton As Object
Dim Prozedurname As String

For Each OptButton In UF_Auswahl.Controls
If OptButton = True Then
Prozedurname = Right(OptButton.Name, Len(OptButton.Name) - 4)
Exit For
End If
Next OptButton

Gruß Specke


  

Betrifft: AW: Prozedurname aus Variable von: Specke
Geschrieben am: 10.01.2008 09:21:34

hatte das Hakerl vergessen
Gruß Specke


  

Betrifft: AW: Prozedurname aus Variable von: Renee
Geschrieben am: 10.01.2008 09:22:56

Hi Specke,

Ich seh überhaupt keine Vorteile deines Ansatzes gegenüber dem klassischen

Private Sub OptionButton1_Click()
    If OptionButton1.Value Then
        MsgBox "do the stuff for OptionButton1"
    End If
End Sub

, denn du bekommst ja nur verschiedene Prozedurenamen. Also erläutere bitte nochmals, was du genau erreichen willst. Zudem kann dein Codeansatz überhaupt nicht funktionieren, da du alle Control-Elemente abfragst und nicht alle Controls True/False als Wert zurückgeben.

GreetZ Renée


  

Betrifft: AW: Prozedurname aus Variable von: Specke
Geschrieben am: 10.01.2008 09:33:45

Hallo Renée,

danke für Dein Interesse.
Ich werte die OptionButton erst nach dem Click auf einen OK-Button aus, da noch andere Checkboxen auf der Userform sind bzw. der Anwender sich noch umentscheiden könnte.
Ich habe also bisher

Private Sub Cmd_OK_Click()

If Opt_W_anf = True Then
    W_anf
ElseIf Opt_W_ende = True Then
    W_ende
ElseIf Opt_W_frei = True Then
    W_frei
ElseIf Opt_S_anf = True Then
    S_anf
ElseIf Opt_S_ende = True Then
    S_ende
ElseIf Opt_S_inter = True Then
    S_inter
ElseIf Opt_SysInfo_akut = True Then
    SysInfo_akut
ElseIf Opt_SysInfo_pro = True Then
    SysInfo_pro
ElseIf Opt_SysInfo_Ende = True Then
    SysInfo_Ende
ElseIf Opt_DNS = True Then
    DNS
Else
    MsgBox "Bitte eine Option wählen!"
End If

End Sub



Kommen nun weitere OptionButtons hinzu, wird der Code noch länger.

Deshalb wollte ich mit einer For Each Schleife alle OptionButtons prüfen, welcher den Wert true hat. Dessen Namen möchte ich in die Variable Prozedurname auslesen, 4 Stellen von links abschneiden und dann mit
Call Prozedurname
die entsprechende Prozedur aufrufen.
Das funktioniert allerdings nicht.

Gruß Specke


  

Betrifft: AW: Prozedurname aus Variable von: Renee
Geschrieben am: 10.01.2008 09:45:08

Hi Specke,

Dann machs doch so, wie du's hast. Die ElseIf Struktur ist hier allerdings überflüssig, da sowieso nur ein Optionbutton True ist. Also würde genügen:

If Opt_W_anf Then W_anf
If Opt_W_ende then W_ende
etc...



GreetZ Renée


  

Betrifft: AW: Prozedurname aus Variable von: Renee
Geschrieben am: 10.01.2008 10:01:01

Oder mit Deinem Ansatz:

Private Sub Cmd_OK_Click()
Dim ctrl As Control

For Each ctrl In UF_Auswahl.Controls
    If Left(ctrl.Name, 4) = "Opt_" Then
        If ctrl.Value = True Then Application.Run Right(ctrl.Name, Len(ctrl.Name) - 4)
    End If
Next
End Sub



GreetZ Renée


  

Betrifft: AW: Prozedurname aus Variable von: Rudi Maintaire
Geschrieben am: 10.01.2008 09:31:46

Hallo,
application.run prozedurname

Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: Danke Rudi, das war's! owT von: Specke
Geschrieben am: 10.01.2008 09:41:28




 

Beiträge aus den Excel-Beispielen zum Thema "Prozedurname aus Variable"