Anzeige
Archiv - Navigation
1620to1624
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

Mehrere Optionsfelder deaktivieren & ausblenden

Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:12:56
Arni
Hallo miteinander,
im Rahmen eines Tools habe ich ca. 200 Optionsfelder (Formularsteuerelement)
mit Hilfe von Gruppenfeldern zusammengefasst (5 OptFelder pro GroupBox).
Zunächst habe ich mehrere Makros aufgezeichnet und mit CommandButtons verknüpft, mit deren Hilfe ich verschiedene OptFelder zurücksetzen kann. Das war schon recht aufwendig, leider konnte ich eine For-Schleife für das Ansprechen mehrerer Felder nicht realisieren.
ActiveSheet.Shapes.Range(Array("OptionButton1")).Select
With Selection
.Value = xlOff
.LinkedCell = "Berechnung!$C$3"
.Display3DShading = False
End With
ActiveSheet.Shapes.Range(Array("OptionButton2")).Select
With Selection
.Value = xlOff
.LinkedCell = "Berechnung!$C$3"
.Display3DShading = False
End With
ActiveSheet.Shapes.Range(Array("OptionButton3")).Select
With Selection
.Value = xlOff
.LinkedCell = "Berechnung!$C$3"
.Display3DShading = False

Für den Benutzer sind womöglich nicht alle 200 Optionsfelder relevant, daher habe ich eine Möglichkeit gesucht, um bei einem Klick auf eine Form die entsprechenden Zeilen mit den Optionsfeldern auszublenden. Das funktioniert und sieht wie folgt aus:
Sub Wettbewerber_color()
With ActiveSheet.Shapes(Application.Caller).Fill.ForeColor
If .RGB  RGB(112, 171, 71) Then 'wenn Farbe nicht grün
.RGB = RGB(112, 171, 71) 'dann mach es grün
Worksheets("CET").Rows("5:6").Hidden = False
Worksheets("CET").Shapes("OptionButton1").Visible = True
Worksheets("CET").Shapes("OptionButton2").Visible = True
Worksheets("CET").Shapes("OptionButton3").Visible = True
Worksheets("CET").Shapes("OptionButton4").Visible = True
Worksheets("CET").Shapes("OptionButton5").Visible = True
Worksheets("CET").Shapes("OptionButton6").Visible = True
Worksheets("CET").Shapes("OptionButton7").Visible = True
Worksheets("CET").Shapes("OptionButton8").Visible = True
Worksheets("CET").Shapes("OptionButton9").Visible = True
Worksheets("CET").Shapes("OptionButton10").Visible = True
Else
.RGB = RGB(175, 172, 171) 'ansonsten mach es grau
Worksheets("CET").Rows("5:6").Hidden = True
Worksheets("CET").Shapes("OptionButton1").Visible = False
Worksheets("CET").Shapes("OptionButton2").Visible = False
Worksheets("CET").Shapes("OptionButton3").Visible = False
Worksheets("CET").Shapes("OptionButton4").Visible = False
Worksheets("CET").Shapes("OptionButton5").Visible = False
Worksheets("CET").Shapes("OptionButton6").Visible = False
Worksheets("CET").Shapes("OptionButton7").Visible = False
Worksheets("CET").Shapes("OptionButton8").Visible = False
Worksheets("CET").Shapes("OptionButton9").Visible = False
Worksheets("CET").Shapes("OptionButton10").Visible = False
End If
End With
End Sub
Jetzt habe ich das Problem, dass ich den Resetbutton nicht mehr betätigen kann, wenn die OptFelder ausgeblendet sind. Eine If-Bedingung (Reset nur, wenn OptionsButton.Visible = True) habe ich nicht realisieren können - außerdem möchte ich ungerne für alle 200 von Hand aufgezeichneten Resetfunktionen eine If-Anweisung nachträglich einfügen.
Für Input jeder Art bin ich dankbar, beste Grüße
Arni

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:29:37
Mullit
Hallo,
die Gruppen und deren Elemente per Code anzusprechen, ist immer nicht ganz ohne, da wirst Du wohl eine Bsp.-mappe mit einer abgespeckten Variante Deines Tools hochladen müssen...
Gruß, Mullit
AW: Juhuu, ich hab dann frei...
27.04.2018 13:44:29
Mullit
...und kann raus in Garten, die beiden Pros übernehmen...;-)
Gruß, Mullit
AW: Juhuu, ich hab dann frei...
27.04.2018 13:51:42
Arni
Trotzdem ein Dankeschön an dich für deine Hilfsbereitschaft! Und jetzt raus an die frische Luft bei dem Wetter =)
Gruß Arni
AW: Hehe, da sitz ich schon längst...
27.04.2018 13:55:15
Mullit
...mit meinem Tablet in der Hand...;-)
Gruß, Mullit
AW: Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:32:27
Rudi
Hallo,
das Reset kannst du ohne Select so lösen, wenn die Elemente Optionbutton1 bis Optionbutton200 heißen:
Sub aa()
Dim i As Integer, shp As Shape
For i = 1 To 200
Set shp = ActiveSheet.Shapes("Optionbutton" & i)
With shp
With .ControlFormat
.Value = xlOff
.LinkedCell = "Berechnung!C3"
End With
.DrawingObject.Display3DShading = False
End With
Next i
End Sub

Gruß
Rudi
Anzeige
AW: Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:38:17
Arni
Das sieht auf den ersten Blick vielversprechend aus, danke. Was mir allerdings direkt ins Auge springt ist folgender Teil der Schleife:
With .ControlFormat
.Value = xlOff
.LinkedCell = "Berechnung!C3"
End With
Jedes Gruppenfeld á 5 OptFelder wird auf eine andere Zelle Verlinkt. In diesem Fall ist die Verlinkung der Felder 1-5 für die Zelle C3 im Tabellenblatt "Berechnung" korrekt, für alle weiteren Gruppen jedoch nicht.
Hier ist ein leicht abgespeckte Datei zum Veranschaulichen:
https://www.herber.de/bbs/user/121325.xlsm
Gruß Arni
Anzeige
AW: Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:46:37
Rudi
Hallo,
ich kann gerade keine xlsm runter laden.
Dann muss du in der Schleife die Bezüge anpassen.
Noch dein Farbmakro:
Sub Wettbewerber_color()
Dim blnSchalter As Boolean, i As Integer
With Worksheets("CET")
With .Shapes(Application.Caller).Fill.ForeColor
blnSchalter = .RGB  RGB(112, 171, 71)
If blnSchalter Then
.Shapes(Application.Caller).Fill.ForeColor.RGB = RGB(112, 171, 71)
Else
.RGB = RGB(175, 172, 171)
End If
End With
.Rows(5).Resize(2).Hidden = Not blnSchalter
For i = 1 To 10
.Shapes("OptionButton" & i).Visible = blnSchalter
Next i
End With
End Sub

Gruß
Rudi
Anzeige
AW: Mehrere Optionsfelder deaktivieren & ausblenden
27.04.2018 13:40:15
Daniel
Hi
normalerweise sollte es zum Reset ausreichen, die Inhalte aller verknüpften Zellen (die Zellen, die bei LinkedCells eingetragen sind) zu löschen.
wenn du ausgeblendete Steuerlemente bearbeiten willst, darfst du sie nicht selektieren, sondern musst hier, wie bei Zellen auch, direkt und vollständig referenzieren:
With ActiveSheet.Shapes.Range(Array("OptionButton1"))
Gruß Daniel
.Range(Array()) braucht's nicht owT
27.04.2018 13:44:33
Rudi
AW: .Range(Array()) braucht's nicht owT
27.04.2018 14:02:32
Arni
Ah ihr seid super! Dass das Löschen der verlinkten Zellen auch die Optionsfelder zurücksetzt, daran hab ich absolut nicht gedacht.
Und für die For-Schleife hab ich jetzt schon eine weitere Verwendung im Kopf... =)
Besten Dank und viele Grüße
Arni
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige