PDA

Vollständige Version anzeigen : Optionsfelder mit Zellen ein- und ausblenden


axtmaestro
11.04.2012, 13:04
Hallo Zusammen

Ich habe eine Tabelle in der ich Zellen ein- und ausblende.
Es sind an der Zahl 9 Zellen. Zu jeder dieser Zellen gibt eis ein Optionsfeld, welches weitere Aktionen in der Tabelle auslöschen soll.

Das Ein- und Ausblenden der Zellen funktioniert soweit sehr gut.
Nun möchte ich auch die Optionsfelder mit den jeweiligen Zellen ein- bzw. ausblenden.

Mit dem Code:
ActiveSheet.Shapes("Optionsfeld X").DrawingObject.Visible = True
werden mir allerdings alle Optionsfelder auf einem Schlag ein- bzw. ausgeblendet.

Hat jemand eine Idee, wie ich das Ein- und Ausblenden der Optionsfelder mit dem Ein- und Ausblenden der Zellen verbinden kann? :rolleyes:

Gruss,
Robert

EarlFred
11.04.2012, 13:30
Hallo Robert,

mal interessenshalber: Wie sieht Dein Code für das Ausblenden einer Zelle aus?

Grüße
EarlFred

axtmaestro
11.04.2012, 13:35
Hallo EarlFred

Ich habe doch die Excel-Datei zu meiner Anfrage mitangehängt. :rolleyes:

Hir nochmal der Code, wie es mit den Optionsfeldern nicht laufen soll:

Sub btnAddBereich2()
Dim lngRow As Long
For lngRow = 7 To 23 Step 2
If Rows(lngRow).Hidden Then
Rows(lngRow).Resize(2).Hidden = False
ActiveSheet.Shapes("Optionsfeld 4").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 5").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 7").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 8").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 9").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 10").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 11").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 12").DrawingObject.Visible = True
ActiveSheet.Shapes("Optionsfeld 13").DrawingObject.Visible = True
Exit For
End If
Next
End Sub


Sub btnClearBereich2()
Dim lngRow As Long
For lngRow = 23 To 7 Step -2
If Not Rows(lngRow).Hidden Then
Rows(lngRow).Resize(2).Hidden = True
ActiveSheet.Shapes("Optionsfeld 4").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 5").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 7").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 8").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 9").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 10").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 11").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 12").DrawingObject.Visible = False
ActiveSheet.Shapes("Optionsfeld 13").DrawingObject.Visible = False
Exit For
End If
Next
End Sub

Gruss,
Robert

EarlFred
11.04.2012, 13:47
Hallo Robert,

Ich habe doch die Excel-Datei zu meiner Anfrage mitangehängt.
Das beantwortet aber wohl kaum meine Frage.

Du blendest alle Optionsfelder, nachdem nur eine Zeile versteckt / nicht versteckt ist, wahllos ein oder aus - ohne zu prüfen, welches. Da liegt das Problem und nicht in der einzelnen von Dir geposteten Codezeile.

Mach's Dir einfach: Benenn die Optionsfelder nach den Zeilen, zu denen sie gehören und blende das betreffende dann gezielt aus:
Sub btnClearBereich2()
Dim lngRow As Long
For lngRow = 23 To 7 Step -2
If Not Rows(lngRow).Hidden Then
ActiveSheet.Shapes("Optionsfeld " & lngRow).DrawingObject.Visible = False
Rows(lngRow).Resize(2).Hidden = True
Exit For
End If
Next
End Sub

Grüße
EarlFred

axtmaestro
11.04.2012, 16:33
Hallo EarlFred

Danke für deinen Vorschlag!

Habe die Optionsfelder nach den Zeilen, zu denen sie gehören mit 7 bis 23 benannt.

Leider funktioniert es mit deinem Code nicht.:rolleyes:

Frage: muss ich hier noch eine " If-Funktion " einbauen?

Gruss,
Robert

EarlFred
11.04.2012, 16:38
Hallo Robert,

Leider funktioniert es mit deinem Code nicht
Leider funktioniert es mit meinem Code in meiner Testmappe sehr gut, so dass ich raten muss. ;)
WAS funktioniert denn bei Dir nicht? Was passiert / passiert nicht?

Hast Du Dir diese Zeile genau angeschaut?
ActiveSheet.Shapes("Optionsfeld " & lngRow).DrawingObject.Visible = False
Die Optionsfelder sollten daher wie folgt heißen:
"Optionsfeld Zahl"
Wobei Zahl die besagte Zeilennummer wäre, getrennt durch einen Leerschlag - also exakt so, wie die Vorgabe im Muster - nur mit anderen Zahlen.

"Funzt" es immer noch nicht?

Grüße
EarlFred