Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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

Trigger für Code?

Trigger für Code?
01.04.2022 11:19:55
Jürgen
Hallo zusammen,
ich habe folgenden Code. Wenn ich den Code per F8 einzeln durchgehe funktioniert er soweit.
Aber wie funktioniert das jetzt das egal welchen Button ich drücke der Code ausgeführt wird? wenn ich das ganze unter Private Sub Worksheet_SelectionChange reinstelle geht das irgendwie nicht.
Die Ja-Button's 10,12 u. 14 schalten die Nein Buttons auf .value = false
Meine Beispieldatei habe ich hier hochgeladen: https://www.herber.de/bbs/user/152178.xlsm
With Range("G1")
If OptionButton11 = True Then 'nein Button
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
With Range("G1")
If OptionButton13 = True Then 'nein Button
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
With Range("G1")
If OptionButton15 = True Then 'nein Button
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
Viel Grüße Jürgen

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trigger für Code?
01.04.2022 11:29:21
{Boris}
Hi,
ohne mir jetzt die komplette Funktionalität angesehen zu haben:
Lager den Code in eine separate Sub in einem allgemeinen Modul aus:

Sub til()
With Range("G1")
If Tabelle1.OptionButton11 = True Then
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
With Range("G1")
If Tabelle1.OptionButton13 = True Then
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
With Range("G1")
If Tabelle1.OptionButton15 = True Then
.Value = "Absage"
.Interior.ColorIndex = 3
Else
.Value = "Freigabe"
.Interior.ColorIndex = 4
End If
End With
End Sub
Und diese Sub rufst Du in den einzelnen Klick-Ereignissen der Buttons auf:

Private Sub OptionButton10_Click()
Call til
End Sub
Private Sub OptionButton12_Click()
Call til
End Sub
Private Sub OptionButton14_Click()
Call til
End Sub
VG, Boris
Anzeige
AW: Trigger für Code?
01.04.2022 11:36:46
Jürgen
Hi Boris,
danke für deine schnelle Antwort. Daran habe ich auch schon gedacht bin aber mit meinen bescheidenen Kenntnissen nicht richtig darauf gekommen wie man so was mach. Das weiß ich jetzt schon mal :)
Aber leider muss ich dann doch jeden einzelnen OptionButton abfragen und das Modul mit call aufrufen. (in der Originaldatei sind sehr viel mehr OptionsButton als die hier gezeigten 3).
Gibts vielleicht noch einen anderen Trigger?
Danke schon mal...
VG Jürgen
Klassenprogrammierung...
01.04.2022 11:39:48
{Boris}
Hi,
...lautet das Stichwort für Deine Frage.
Alternativ: Wenn Du die Optionsbuttons aus den Formularsteuerelementen verwendest, dann könntest Du auch mit Application.Caller arbeiten.
VG, Boris
Anzeige
AW: Klassenprogrammierung...
01.04.2022 11:43:30
Jürgen
Hi Boris,
sorry, leider bin ich mit den Formularsteuerelementen nicht und deren Programmierung auch nicht sehr betraut wie VBA.
VG Jürgen
AW: Trigger für Code?
01.04.2022 11:42:31
UweD
Hallo
so?

Private Sub OptionButton10_Click()
UmschaltenJa
End Sub
Private Sub OptionButton11_Click()
UmschaltenNein
End Sub
Private Sub OptionButton12_Click()
UmschaltenJa
End Sub
Private Sub OptionButton13_Click()
UmschaltenNein
End Sub
Private Sub OptionButton14_Click()
UmschaltenJa
End Sub
Private Sub OptionButton15_Click()
UmschaltenNein
End Sub
Sub UmschaltenJa()
With Range("G1")
.Value = "Freigabe"
.Interior.ColorIndex = 4
End With
End Sub
Sub UmschaltenNein()
With Range("G1")
.Value = "Absage"
.Interior.ColorIndex = 3
End With
End Sub
LG UweD
Anzeige
AW: Trigger für Code?
01.04.2022 11:49:56
Jürgen
Hi Uwe,
wäre dann ja auch eine Abfrage jedes einzelnen Button in eigener SUB
VG Jürgen
AW: Trigger für Code?
01.04.2022 12:02:30
Daniel
Hi
richtig. bei ActiveX-Steuerelementen benötigt jeder Button sein eignes Makro. Es sei denn, man verwendet die Methoden der Klassenprogrammierung (womit ich mich aber nicht auskenne)
die alternative sind Formularfeld-Steuerelemente, hier kann man jedem Element ein Makro aus einem allgemeinen Modul zuweisen, welches dann bei Klick auf dieses Element ausgeführt wird. Hierbei darf man auch das selbe Makro für mehrere Steuerelemente verwenden. Im Makro kann man dann über Application.Caller abfragen, welches Element denn das Makro im aktuellen Fall ausgelöst hat. das ist quasi Klassenprogrammierung light.
Gruß Daniel
Anzeige
AW: Trigger für Code?
01.04.2022 12:06:03
Jürgen
Hi Daniel,
danke dir :)
Dann werd ich wohl alle Buttons in der Originaldatei einzeln abfragen müssen.
VG Jürgen
AW: Trigger für Code?
01.04.2022 12:08:49
Rudi
Hallo,
z.B.

Private Sub OptionButton11_Change()
Call aaa(OptionButton11)
End Sub
Private Sub OptionButton13_Change()
Call aaa(OptionButton13)
End Sub
Private Sub OptionButton15_Change()
Call aaa(OptionButton15)
End Sub
Sub aaa(myOPT As Object)
Dim strVAL As String, intCOL As Integer
strVAL = "Freigabe"
intCOL = 4
If myOPT Then
strVAL = "Absage"
intCOL = 3
End If
With Range("G1")
.Value = strVAL
.Interior.ColorIndex = intCOL
End With
End Sub
Gruß
Rudi
Anzeige
AW: Trigger für Code?
01.04.2022 12:46:07
Jürgen
Hi Rudi,
danke funktioniert schon ganz gut, leider nicht so ganz wie ich mir das vorgestellt hab ... zb wenn jetzt einer der ja Buttons aktiviert wird geht die Anzeige auf Freigabe obwohl irgend ein anderer noch auf nein steht.
Werde wohl nicht drum rum kommen und jeden einzelnen Button bei _Change abzufragen
VG Jürgen
AW: Trigger für Code?
01.04.2022 13:13:05
Daniel
Hi
machs doch einfacher:
Freigabe soll doch nur erscheinen, wenn alle drei OK-Buttons auf aktiv sind, oder?
du könntest das ganze auch ohne Code machen.
du hast die möglichkeit, für jeden Button eine Ausgabezelle zu definieren, in der sein Zustand mit WAHR oder FALSCH steht. Das geht in dem du die Zelladresse in der Eigenschaft LinkedCell einträgst.
Wenn das beispielsweise für die OK-Buttons die Zellen H3:H5 sind, kannst du in G1 die Formel schreiben: =Wenn(UND(H3:H5);"Freigabe";"Absage")
Färbung läuft über die Bedingte Formatierung.
So geht das ganze ohne eine Zeile Code.
Gruß Daniel
Anzeige
AW: Trigger für Code?
01.04.2022 13:17:06
Jürgen
Hi Daniel,
Danke dir ...
ja an dem Gedanke bin ich auch gerade und dran zu probieren.
VG Jürgen
AW: Trigger für Code?
01.04.2022 13:30:11
Jürgen
Hi
Vielen Dank euch allen für die Hilfe.
Hab mich entschieden das jetzt ohne Code zu realisieren ... wie auch von Daniel vorgeschlagen :)
VG Jürgen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige