Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

Mehrere Steuerelemente gleichzeit ansprechen

Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 11:43:21
Gast1008
Hallo zusammen,
wie kann ich in einem Tabellenblatt mehrere Steuerelemente gleichzeitig ansprechen und voneinander abhängig machen.
Habe folgenden Code, der leider nicht funktioniert:

Private Sub Test()
With Worksheet("Tabelle1")
If CLng(.ComboBox1) = 1
Or .OptionButton1 = True _
Or .OptionButton3 = True Then
Worksheets("Tabelle1").Range("A1") = "Text"
Else:
Worksheets("Alternativen").Range("A1") = ""
End If
End With
End Sub

Wenn ich jetzt hinter "Private Sub" statt "Test" "ComboBox1_Change" schreibe, spricht der Code zumindest die ComboBox1 an. Wenn ich diesen Befehl mit "OptionButton1_Click" ersetze, dann spricht er diese an usw. Die anderen werden jedoch nie mit einbezogen.
Wie schaffe ich es, dass ich alle Steuerelemente mit einbeziehen kann?
Danke im Voraus für eure Hilfe! :)

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 12:04:32
Daniel
Hi
ein automatisches Eventmakro, welches für mehrere Steuerelemente gleichzeitig gilt, gibt es nicht.
Jedes Steuerelement benötigt sein eigenes Makro.
Nur dann kann die Aktion auch automatisch bei allen drei Steuerelementen ausgeführt werden.
wenn bei allen drei Steuerelementen immer die gleiche Aktion ausgeführt werden soll, dann braucht man den Code trotzdem nicht 3x wiederholen.
dann schreibt man den Code in ein eigenes Makro und ruft dieses dann aus allen drei Eventmakros heraus auf:

Private Sub ComboBox1_Change()
Call Test
End Sub
Private Sub OptionButton1_Click()
Call Test
End Sub
Private Sub OptionButton3_Click()
Call Test
End Sub
Private Sub Test()
With Worksheet("Tabelle1")
If CLng(.ComboBox1) = 1
Or .OptionButton1 = True _
Or .OptionButton3 = True Then
Worksheets("Tabelle1").Range("A1") = "Text"
Else:
Worksheets("Alternativen").Range("A1") = ""
End If
End With
End Sub
Gruß Daniel
Anzeige
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 12:45:28
Gast1008
Danke für deine schnelle Antwort! :)
Funktioniert bei mir leider trotzdem noch nicht ganz. Jetzt erscheint in Bezug auf "private Sub Test" folgende Fehlermeldung :-/
"Fehler beim Kompilieren: Sub nicht definiert"
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 12:49:01
Werner
Hallo,
dann zeig doch mal deinen kompletten Code der Sub.
Gruß Werner
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 12:54:53
Gast1008
Der komplette Code sieht aktuell so aus:
Private Sub ComboBox3_Change()
Call Test
End Sub

Private Sub OptionButton1_Click()
Call Test
End Sub

Private Sub OptionButton3_Click()
Call Test
End Sub
Private Sub Test()
With Worksheet("Alternativen")
If CLng(.ComboBox3) > Worksheets("Stammdaten").Cells(.Range("O4") + 2, 28) _
Or .OptionButton1 = True _
Or .OptionButton3 = True Then
Worksheets("Alternativen").Range("H24") = "Text1"
Worksheets("Alternativen").Range("H25") = "Text2"
Else:
Worksheets("Alternativen").Range("H24:H25") = ""
End If
End With
End Sub

Anzeige
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 12:58:32
Werner
Hallo,
deine Private Sub Test() befindet sich auch in einem allgemeinen Modul?
Gruß Werner
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 13:02:49
Gast1008
Die Codes stehen allesamt unter "Microsoft Excel Objekte" unter dem dazugehörigen Tabellenblatt.
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 13:06:37
Daniel
Hi
Makros, die du mit "Private" deklariert hast, sind nur innerhalb des Moduls sichtbar, in dem sie stehen.
Steht das aufgerufene Makro in einem anderen Modul als die aufrufenden Makros, so muss es als "Public" deklariert werden.
Public Sub Test()
Wenn das Makro nicht in einem allgemeinen Modul steht (Modul1) sondern in einem Tabellenblattmodul (Tabelle1), dann musst du bei Call aus einem anderen Modul heraus nicht nur den Makronamen, sondern auch das Modul angeben, in welchem das Makro steht:
Call Tabelle1.Test
nur wenn das aufgerufene Makro in einem allgemeinen Modul steht, kann man es direkt aufrufen, ohne den Modulnamen davor schreiben zu müssen.
Der Grund hierfür ist die Eindeutigkeit.
Auch wenn du mehrere allgemeine Module hat, kann es in allen allgemeinen Modulen immer nur ein Makro "Test" geben.
In den Tabellenblattmodulen ist diese Eindeutigkeit nicht gegeben, hier kann jedes Tabellenblattmodul ein Makro "Test" enthalten, daher muss man dann angeben, welches man meint.
Gruß Daniel
Anzeige
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 13:23:32
Gast1008
Hi Daniel,
wenn ich jetzt den kompletten Code aber in einem Tabellenblattmodul stehen habe, also auch den Code, den ich mit Call aufrufe, müsste es doch trotzdem klappen?
Habe es jetzt trotzdem mal in Public abgeändert, und auch das Makro in ein anderes Modul geschrieben welches ich aufrufe, klappt aber leider immer noch nicht :-/
Danke
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 13:28:55
Daniel
Hi
lade bitte die Datei mit dem Fehler hoch.
da muss man schon genau sehen, was du programmiert hast.
Gruß Daniel
AW: Mehrere Steuerelemente gleichzeit ansprechen
01.09.2016 15:14:09
Gast1008
Frag nicht wie, aber ich habs irgendwie hinbekommen.
Danke euch für eure Hilfe! :)
AW: Mehrere Steuerelemente gleichzeit ansprechen
02.09.2016 09:39:05
Gast1008
Guten Morgen :)
Jetzt muss ich euch leider trotzdem nochmal etwas fragen. Der Code an sich funktioniert zwar nun, scheinbar stimmt aber im logischen Aufbau etwas noch nicht.
Das Makro sieht jetzt wie folgt aus:
Public Sub Test()
With Worksheets("Tabelle1")
If CLng(.ComboBox3) > Worksheets("Stammdaten").Cells(.Range("O4") + 2, 28) _
Or .OptionButton1 = True _
Or .OptionButton3 = True Then
.Range("H24") = "Text
Else: Worksheets("Tabelle1").Range("H24") = ""
End If
End With
End Sub
Es sollen quasi die ComboBox3, und die beiden Button abgeprüft werden und wenn die Bedingungen erfüllt sind, soll ein Text erscheinen, für die anderen Fälle soll kein Text erscheinen. Dies funktioniert nun so weit bis ich an meinen Eingaben nochmals Änderungen vornehme.
Wenn also z.B. keine der Bedingungen mehr zutrifft, soll der Text wieder erlöschen, dies funktioniert aber leider nicht richtig. Es müsste also immer wieder abgeprüft werden ob die Bedinungen noch korrekt sind.
Wie müsste ich den Code dann umschreiben?
Ich hoffe ihr versteht was ich meine
Danke euch schon mal und viele Grüße :)
Anzeige
AW: Mehrere Steuerelemente gleichzeit ansprechen
02.09.2016 09:45:46
Gast1008
Im Falle der Combobox funktioniert es übrigens, nur bzgl. der Optionbutton hapert es noch ;)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige