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

Code verkürzen

Code verkürzen
15.07.2019 13:32:17
KJ
Hallo VBA-Cpmmunity,
gibt es einen Weg den folgenden Code zu verkürzen? Vielen Dank schonmal im Voraus.

Private Sub global_pst_Click()
If global_pst.Value = True Then
pos_pst.Value = False
mobile_pst.Value = False
web_pst.Value = False
scale_pst.Value = False
lpp_pst.Value = False
End If
End Sub
Private Sub pos_pst_Click()
If pos_pst.Value = True Then
global_pst.Value = False
End If
End Sub
Private Sub mobile_pst_Click()
If mobile_pst.Value = True Then
global_pst.Value = False
End If
End Sub
Private Sub web_pst_Click()
If web_pst.Value = True Then
global_pst.Value = False
End If
End Sub
Private Sub scale_pst_Click()
If scale_pst.Value = True Then
global_pst.Value = False
End If
End Sub
Private Sub lpp_pst_Click()
If lpp_pst.Value = True Then
global_pst.Value = False
End If
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code verkürzen
15.07.2019 13:45:11
Daniel
Hi
probiers mal so:
Private Sub pos_pst_Click()
If ActiveControl.Value = True Then global_pst.Value = False
End Sub
die Programmzeile kannst du per Copy-Paste in die weitern Click-Eventmakros übernehmen, da über das ActiveControl automatisch auf das gerade angeklickte Element referenziert wird.
wenn der auszuführende Code etwas länger ist, würde ich ihn in ein allgemeines Makro auslagern und in den EventMakros nur aufrufen, mit übergabe des zu verwendenden Steuerelements:
Sub global_pst_Leeren(obj as object)
if obj.Value  = True then
global_pst.value = Valse
End if
End sub
die Klick-Events sehen dann so aus:
Private Sub pos_pst_Click()
Call global_pst_leeren(activecontrol)
End Sub

wenn sehr viele dieser Elemente hast, die immer das gleiche ausführen sollen, könntest du über Klassenprogrammierung nachdenken, da musst du nur ein Click-Eventmakro anlegen, welches du dann für alle gültig setzt.
Das ist dann aber schon höhere Schule und loht sich erst bei vielen Elementen, bzw vornehmlich dann, wenn die Elemente erst zur Laufzeit per Code erzeugt werden.
Gruß Daniel
Anzeige
AW: Code verkürzen
15.07.2019 14:09:42
KJ
Hi Daniel,
Danke erstmal für die schnelle Antwort. Ich habe mal die Variante mit dem auslagern probiert. Mein Code sieht nun folgendermaßen aus:
Sub global_pst_Leeren(obj As Object)
If obj.Value = True Then
global_pst.Value = False
End If
End Sub
Private Sub pos_pst_Click()
Call global_pst_Leeren(ActiveControl)
End Sub
Private Sub mobile_pst_Click()
Call global_pst_Leeren(ActiveControl)
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub web_pst_Click()
Call global_pst_Leeren(ActiveControl)
End Sub
Private Sub scale_pst_Click()
Call global_pst_Leeren(ActiveControl)
End Sub
Private Sub lpp_pst_Click()
Call global_pst_Leeren(ActiveControl)
End Sub
Jedoch sollte ja wenn sozusagen global_pst aktiviert ist, die anderen deaktiviert sein, und wenn ein anderer (egal welcher), soll global_pst deaktiviert sein. Heisst der User hat die Möglichkeit entweder nur global_pst auszuwählen, dann werden die anderen ausgecheckt oder er kann beliebig viele andere auswählen, jedoch wird dann global_pst ausgecheckt. Bei der Variante oben passt es nicht so ganz.
Anzeige
AW: Code verkürzen
15.07.2019 15:01:07
Daniel
Hi
"passt noch nicht so ganz" ist als Problembeschreibung jetzt eher nichtssagend und enthält keinen Hinweis auf eine mögliche Lösung.
Wenn du zum Arzt gehst und ihm nur sagst, dass du dich krank fühlst ohne genauer zu werden, worin sich das äußerst, dann wird er dir wahrscheinlich auch nicht helfen können.
Gruß Daniel
AW: Code verkürzen
15.07.2019 15:37:15
KJ
Entschuldigung vor lauter lauter. Also das Problem ist, wenn ich zB. den mobile_pst aktiviere, wird wie es sollte auch der global_pst deaktiviert. Aber sobald dann mobile_pst aktiv ist, ist es dann möglich noch global_pst zu aktivieren. Das soll ja nicht gehen. Zudem wenn global_pst aktiv ist sollen alle anderen deaktiviert, also ausgecheckt sein (nicht mit dem Enabled = true / false).
Anzeige
AW: Code verkürzen
15.07.2019 16:16:03
Daniel
Hi
mein Beispiel verkürzt nur die klicks auf die untergeordneten Elemente.
den Code für das was passieren soll, wenn du auf global_Pst klickst, musst du natürlich drin lassen.
solche Abhängigkeiten sind immer recht aufwendig zu programmieren. da wirst du um Fleißarbeit nicht herumkommen oder du musst dir ein anderes Konzept überlegen.
Gruß Daniel
AW: Code verkürzen
15.07.2019 16:33:48
KJ
Achso okai, ich dachte das muss dann komplett raus. Jetzt verstehe ich das. Ich danke dir. Hast mir sehr viel weiter geholfen.
AW: Code verkürzen
15.07.2019 14:55:53
onur
Sind das Checkboxen?
AW: Code verkürzen
15.07.2019 15:30:37
KJ
Ja
AW: Code verkürzen
15.07.2019 16:11:18
onur
Dein Code ist eigentlich ganz ok, man kann ihn etwas verkürzen:
Private Sub global_pst_Click()
If global_pst = True Then
pos_pst = False
mobile_pst = False
web_pst = False
scale_pst = False
lpp_pst = False
End If
End Sub
Private Sub pos_pst_Click()
If pos_pst then global_pst=false
End Sub
Private Sub mobile_pst_Click()
If mobile_pst then global_pst=false
End Sub
....

Anzeige
AW: Code verkürzen
15.07.2019 16:34:50
KJ
Top, dankee funzt soweit für mich :-) tsk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige