2.7k Aufrufe
Gefragt in Tabellenkalkulation von mimadel Mitglied (117 Punkte)
Moin,

ich bin kurz vorm Verzweifeln...:

Private Sub OptionButton5_Click()
Sheets("Seite 1").Unprotect Password:="xxx"

Range("c43:v43").Interior.ColorIndex = xlNone 'CB2
Range("c60:r60").Interior.ColorIndex = xlNone 'CB7
Range("c62:n62").Interior.ColorIndex = xlNone 'CB8
CheckBox2 = False

For Each OLEObject In ActiveSheet.OLEObjects

If TypeOf OLEObject.Object Is MSForms.CheckBox Then
If Not TypeOf OLEObject.Object Is MSForms.OptionButton Then
If OLEObject.Name <> CheckBox3 Then If OLEObject.Object.Value = True Then OLEObject.Object.Value = False
End If
End If
Next OLEObject

If CheckBox5 = False Then
Range("c56:q56").Interior.ColorIndex = 42
End If
If CheckBox6 = False Then
Range("c58:q58").Interior.ColorIndex = 42
End If

Call unterlagenpruefung 'prüft, ob CB5 + CB6 abgehakt sind, sonst Wasserzeichen
Sheets("Seite 1").Protect Password:="xxx"
End Sub

Hintergrund:
bei jedem Wechsel der Optionbuttons sollen die Checkboxen (ncith die Optionbuttons) "enthakt" werden - dann werden in diesem Fall die Checkboxen 5 und 6 farbig unterlegt (Pflichtangaben).
Das Makro bricht jedoch ab mit Fehlerhinweis "Laufzeitfehler 1004: ColorIndexs-Eigenschaft des Interior-Objektes kann nciht festgelegt werden" und bleibt beim Debuggen in der Zeile "Range("c56:q56").Interior.ColorIndex = 42" hängen.

Was mache ich falsch? Irgendeine Idee? Das Makro ist im Tabellenblatt hinterlegt, muss es evtl. als Modul irgendwo rein?

Bin für jeden Tipp dankbar!!!

Gruß,
michael

8 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Michael,

hast du schon mal folgenden Version probiert:

If CheckBox5 = False Then
Sheets("Seite 1").Range("c56:q56").Interior.ColorIndex = 42
End If
If CheckBox6 = False Then
Sheets("Seite 1").Range("c58:q58").Interior.ColorIndex = 42
End If


Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Hallo M.O.,

ja, hatte ich vorher auch schon mal probiert.
Das Ergebnis und somit der Fehlerhinweis sind leider identisch.

:-(
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

dann probier es mal so:

If CheckBox5 = False Then
With Sheets("Seite 1")
.Range("c56:q56").Interior.ColorIndex = 42
End With
End If
If CheckBox6 = False Then
With Sheets("Seite 1")
.Range("c58:q58").Interior.ColorIndex = 42
End With
End If

Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Wow!
Ein erster Erfolg! Das Makro läuft glatt durch! Supi!

Ein Problem noch:
teilweise sind andere Checkboxen (für andere Optionbuttons) auch eingefärbt, die tauchen jetzt hier auch wieder (gefärbt) auf.

Die Variante einer farblichen Kennung wie:

If CheckBox2 = False Then
With Sheets("Seite 1").Range("c43:v43").Interior.ColorIndex = xlNone
End With
End If

(dto für 5 weitere Checkboxen)

funktioniert leider nicht.

Noch eine Idee, wie dieses Problem lösbar wäre?
Aber erstmal schon mal DANKE für die erste Lösung.
Ein Schritt vorwärts... :-)
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

versuch es mal so:

If CheckBox2 = False Then
With Sheets("Seite 1").Range("c43:v43").Interior.ColorIndex = 0
End With
End If


Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Moin,

nee, hilft leider auch nicht, Ergebnis ist dasselbe.
Die Kästchen sind ohne Haken, aber die Farben sind noch vorhanden.

Gibt es noch irgendeine Möglichkeit??
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Ich habe jetzt mal einen anderen Weg probiert:

Sub CB_leeren3()
Sheets("Seite 1").Unprotect Password:="xxx"

With Sheets("Seite 1").Range("c56:ap80").Interior.ColorIndex = xlNone
End With

For Each OLEObject In Sheets("Seite 1").OLEObjects

If TypeOf OLEObject.Object Is msforms.CheckBox Or TypeOf OLEObject.Object Is msforms.OptionButton Then
If OLEObject.Name <> CheckBox3 Then _
If OLEObject.Name <> OptionButton1 Then _
If OLEObject.Name <> OptionButton2 Then _
If OLEObject.Name <> OptionButton10 Then _
If OLEObject.Name <> OptionButton11 Then _
If OLEObject.Object.Value = True Then OLEObject.Object.Value = False
End If

Next OLEObject
Sheets("Seite 1").Protect Password:="xxx"
End Sub


Ich will also alle Optionbuttons und Checkboxes außer den Genannten "aushaken" und die Range gänzlich auf weiße Farbe (also keine farbliche Kennzeichnung) stellen.

Geht aber auch nicht: ALLE Buttons/Boxes werden ausgehakt, die farbliche Kennzeichnung bleibt.

Habt ihr Verbesserungsvorschläge für das Makro?
So langsam dreh ich durch.... :-(
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
So.

Nun habe ich eine Lösung gefunden.

'=== löscht alle Haken aus Checkboxen und setzt Auftragsart auf "leer" ===

Sub Leeren()

t = MsgBox("Soll die Auftragsart tatsächlich gewechselt werden?" & vbCrLf & _
"Alle Haken in den Checkboxen der Auftragserteilung werden dann entfernt.", vbYesNo, "Rückfrage")
If t = vbNo Then Exit Sub

Sheets("Seite 1").Unprotect Password:="xxx"

Dim ObjOLE As OLEObject

For Each ObjOLE In Sheets("Seite 1").OLEObjects

If TypeOf ObjOLE.Object Is msforms.CheckBox Then
If Not TypeOf ObjOLE.Object Is msforms.OptionButton Then
If ObjOLE.Name <> CheckBox3 Then If ObjOLE.Object.Value = True Then ObjOLE.Object.Value = False
End If
End If
Next ObjOLE

Sheets("Seite 1").OptionButton3.Value = False
Sheets("Seite 1").OptionButton4.Value = False
Sheets("Seite 1").OptionButton5.Value = False
Sheets("Seite 1").OptionButton6.Value = False
Sheets("Seite 1").OptionButton7.Value = False

Call Farbe
Sheets("Seite 1").Protect Password:="xxx"

End Sub


'=== Farbunterlegung für Checkboxen auf neutral ===

Sub Farbe()
Sheets("Seite 1").Unprotect Password:="xxx"

Range("c56:ap80").Interior.ColorIndex = 2
Range("c43:v43").Interior.ColorIndex = 2

Sheets("Seite 1").Protect Password:="xxx"
End Sub


Ich habe einen separaten CommandButton eingebaut, der nach einer Sicherheitsabfrage alle Haken in den Checkboxen entfernt. Außerdem werden 5 Optionbuttons auf "null" gestellt. Dann muss auch die farbliche Unterlegung raus, das funktioniert interessanterweise NUR über den Call einer separaten Sub-Anweisung. Nach Auswahl eines der 5 Optionsbuttons wird die farbliche Unterlegung dann wieder separat angestoßen.

Ich hoffe, ich konnte hier jemandem helfen, der ähnliche "Sorgen" hat. Danke an M.O. für die Unterstützung!
...