Aufruf von Sub funktioniert nicht!

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Aufruf von Sub funktioniert nicht!
von: Michi
Geschrieben am: 13.08.2015 16:16:13

Hallo,
ich hab eine Sub geschrieben, die ich dann innerhalb einer Checkbox aufrufen will. Ich habe ca 100 Checkboxen, die jede die selbe Funktion haben. Sie sollen die Schriftfarbe einer Zelle (hier A1 als Beispiel genommen) ändern, je nachdem ob sie angeklickt sind oder nicht. Natürlich letzendlich dann für jeweils verschiendene Zellen, aber das ist im Moment erstmal egal.
Um allerdings nicht 100 mal die selben Codezeilen zu haben, wollte ich eine allgemeine Sub schreiben und die jeweils in den Checkboxen aufrufen (was besseres fällt mir leider zur Zeit nicht ein).
Das funktioniert auch, allerdings wird nur beim ersten Anklicken die Farbe geändert und wene die CheckBox dann nochmal angeklickt wird, passiert nichts mehr. Ich kann mir allerdings nicht erklären, woran das liegt. Mit jedem Anklicken müsste die Methode ja eigentlilch neu aufgerufen werden.

Public Sub Checkboxen(ByVal i As Integer)
 
    If Checkbox + i Then Range("A1").Font.ColorIndex = 8
    If Not (Checkbox + i) Then Range("A1").Font.ColorIndex = 10
    
End Sub




' Methodenaufruf in CheckBox

Private Sub CheckBox14_Click()
 
Call Checkboxen(14)
 
End Sub




Kann sich jm erklären, woran das liegen könnte? Vielen Dank schonmal im vorraus!

Liebe Grüße
Michi

Bild

Betrifft: AW: Aufruf von Sub funktioniert nicht!
von: Nepumuk
Geschrieben am: 13.08.2015 17:07:52
Hallo,
würde ich dann eher so machen:

Private Sub CheckBox14_Click()
    Call Checkboxen(CheckBox14)
End Sub

Public Sub Checkboxen(ByRef probjCheckBox As MSForms.CheckBox)
    If probjCheckBox Then
        Range("A1").Font.ColorIndex = 8
    Else
        Range("A1").Font.ColorIndex = 10
    End If
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Aufruf von Sub funktioniert nicht!
von: Mühü
Geschrieben am: 16.08.2015 12:29:34
Danke für deine Antwort! Hab leider daheim am Commputer kein Excel, jetzt muss ich bis morgen im Praktikum warten, bis ich deinen Code ausprobieren kann. Jetzt hab ich aber nach wie vor das Problem, dass ich in jeder Checkbox die Methode aufrufen muss ge?
Fällt dir da zufällig ein allgemeinerer Lösungsweg ein, also dass ich irgendwie eine Methode habe, die mit der aktuell angeklickten Checkbox durchläuft (ohne, dass ich halt in jeder der 100 Checkboxen die Methode wieder aufrufen müsste)? Oder ist das gar nicht möglich?
Liebe Grüße
Michi

Bild

Betrifft: AW: Aufruf von Sub funktioniert nicht!
von: Nepumuk
Geschrieben am: 16.08.2015 13:22:13
Hallo,
das kommt auf die Position der Checkboxen in der Tabelle an.
Es ist möglich deren Position auszulesen und daraus auf den Range zu schließen der gefärbt werden soll. Am besten mal eine Mustermappe hochladen.
Gruß
Nepumuk

Bild

Betrifft: fauler Kompromiß?
von: Michael
Geschrieben am: 16.08.2015 13:54:59
Hi zusammen,
ich wäre viel zu faul, sooo viele ChBen anzulegen; ob es der user einem dankt, ist auch fraglich.
Wie wäre es damit?

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Font.ColorIndex = 8 Then
   Target.Font.ColorIndex = 10
  Else
   Target.Font.ColorIndex = 8
End If
Cancel = True
End Sub
Wenn man nicht exakt die angeklickte Zelle haben will, kann man sich ja mit einem kleinen Umweg behelfen, hier für Spalte A:
If Cells(Target.Row, 1).Font.ColorIndex = 8 Then
   Cells(Target.Row, 1).Font.ColorIndex = 10
  Else
   Cells(Target.Row, 1).Font.ColorIndex = 8
End If
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Aufruf von Sub funktioniert nicht!"