Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code vereinfachen

Forumthread: Code vereinfachen

Code vereinfachen
09.11.2022 10:23:15
Sascha
Hallo zusammen.
Ich bin in VBA nicht sehr bewandert und deswegen sind meine Codes meistens sehr umständlich und umfangreich.
Jetzt habe ich wieder ein VBA-Thema, das eigentlich sehr einfach zu lösen aber auch sehr zeitaufwändig ist.
Folgender Code:

Private Sub Checkbox1_Click()
If CheckBox1.Value = False Then ActiveSheet.Range("G3").ClearContents: ActiveSheet.Range("G3") = "0": ActiveSheet.Range("A3:G3").Interior.ColorIndex = 0: ActiveSheet.Range("B3:G3").Font.Color = RGB(255, 255, 255): CheckBox1.Value = False
If CheckBox1.Value = True Then ActiveSheet.Range("A3:G3").Interior.ColorIndex = 35: ActiveSheet.Range("B3:G3").Font.Color = RGB(0, 0, 0): CheckBox1.Value = True
End Sub

Private Sub Checkbox2_Click()
If CheckBox2.Value = False Then ActiveSheet.Range("G4").ClearContents: ActiveSheet.Range("G4") = "0": ActiveSheet.Range("A4:G4").Interior.ColorIndex = 0: ActiveSheet.Range("B4:G4").Font.Color = RGB(255, 255, 255): CheckBox2.Value = False
If CheckBox2.Value = True Then ActiveSheet.Range("A4:G4").Interior.ColorIndex = 35: ActiveSheet.Range("B4:G4").Font.Color = RGB(0, 0, 0): CheckBox2.Value = True
End Sub

Private Sub Checkbox3_Click()
If CheckBox3.Value = False Then ActiveSheet.Range("G5").ClearContents: ActiveSheet.Range("G5") = "0": ActiveSheet.Range("A5:G5").Interior.ColorIndex = 0: ActiveSheet.Range("B5:G5").Font.Color = RGB(255, 255, 255): CheckBox3.Value = False
If CheckBox3.Value = True Then ActiveSheet.Range("A5:G5").Interior.ColorIndex = 35: ActiveSheet.Range("B5:G5").Font.Color = RGB(0, 0, 0): CheckBox3.Value = True
End Sub

Das wiederholt sich jetzt noch so weiter für 120 Checkboxen.
Mit jeder Checkbox verschiebt sich alles um eine Zeile (Checkbox 1 für Zeile 3, Checkbox2 für Zeile 4, usw.)
Jetzt meine Frage: gibt es da nicht einen einfacheren Weg das Ganze in VBA zu schreiben damit ich nicht für 120 Checkboxen immer dasselbe Prozedere durchtippen muss?
Bin für jede Hilfe sehr dankbar.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code vereinfachen
09.11.2022 10:24:49
Oberschlumpf
Hi Sascha
zeig doch mal per Upload ne Bsp-Datei mit Bsp-Daten (wenn erforderlich) auf jeden Fall mit deinem Code.
Ciao
Thorsten
AW: Code vereinfachen
09.11.2022 11:04:25
Oberschlumpf
Hallo wird hier gern gelesen...
hier, teste mal
https://www.herber.de/bbs/user/156107.xlsm
Ich hab den Code für CheckBox1 bis ...Box3 angepasst.
Für ...Box4 bis ...Box10 schaffst du, oder?
Hilfts?
Ciao
Thorsten
Anzeige
AW: Code vereinfachen
09.11.2022 11:14:56
Sascha
Super, vielen Dank Thorsten.
Das hat mir sehr weitergeholfen.
Gruß,
Sascha
AW: Code vereinfachen
09.11.2022 14:01:02
Daniel
Hi
da solltest du komplett ohne Checkbox und Code arbeiten.
schreibe in die Spalte H einfach "a" oder "i", je nachdem ob das Projekt aktiv oder in aktiv ist.
die Färbung regelst du über Bedingte Formatierung (Regelformel: für die Zellen ist: =$H2="a")
damit die Summe in Spalte G stimmt, summierst du nur die aktiven mit =SummeWenns(G2:G12;H2:H12;"a")
hätte auch den Vorteil, dass du den Effort nicht nochmal eingeben musst, wenn du von inaktiv auf aktiv zurückschaltest.
Gruß Daniel
Anzeige
AW: Code vereinfachen
09.11.2022 11:05:04
Daniel
Hi
Ohne Checkbox.
Nutze den Doppelklick und das dazugehörige BeforeDoubleclick-Event um den Code auszulösen.
Dort ist Target die Variable, die die angeklickte Zelle enthält, aus welcher du dann die Zeilennummer ableiten kannst.
Ob der True- oder Falsefall vorliegt, ermittelst du, indem du dir Farbe einer der betroffenen Zellen abfragst.
Gruß Daniel
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige