Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prozedurname aus Variable

Prozedurname aus Variable
10.01.2008 08:22:00
Specke
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?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozedurname aus Variable
10.01.2008 08:44:05
Renee
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

AW: Prozedurname aus Variable
10.01.2008 08:54:37
Specke
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

AW: Prozedurname aus Variable
10.01.2008 09:21:00
Specke
hatte das Hakerl vergessen
Gruß Specke

Anzeige
AW: Prozedurname aus Variable
10.01.2008 09:22:00
Renee
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

AW: Prozedurname aus Variable
10.01.2008 09:33:45
Specke
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

Anzeige
AW: Prozedurname aus Variable
10.01.2008 09:45:00
Renee
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

AW: Prozedurname aus Variable
10.01.2008 10:01:00
Renee
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

Anzeige
AW: Prozedurname aus Variable
10.01.2008 09:31:00
Rudi
Hallo,
application.run prozedurname
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Danke Rudi, das war's! owT
10.01.2008 09:41:28
Specke

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige