
řekněme že přepínač pojmenuji OB1, v klasickém VB bych napsal když nějaká podmínka je splněna tak
OB1.enabled = true jinak false
ale když to zkusím ve VBA tak to nejde:
ActiveSheet.Shapes("OB1").Enabled = False
nějak nemám na to zkoumat proč a tak bych to obešel pomocí zobrazení / skrytí:
ActiveSheet.Shapes("OB1").Visible = False
Takto to bude fungovat jak pro formulářový prvek tak i ActiveX s tím rozdílem že ten první je složitější pojmenovat jelikož nenabízí vlastnosti, což řeším přiřazením makra s kódem:
ActiveSheet.Shapes(Application.Caller).Name = "OB1"
Třeba to trochu pomůže ;-)
M@

Skúsil som
Sub Skry()
If Range("Q14") > 0 Then
ActiveSheet.Shapes("OptionButton55").Visible = True
Else
ActiveSheet.Shapes("OptionButton55").Visible = False
End If
End Sub
zahlásilo chybu- Run time Error 5
Ak som do makra vložil
ActiveSheet.Shapes(Application.Caller).Name = "OptionButton55"
zahlásilo chybu- Run time Error 13
Kde robím chybu?
Ďakujem

Tvoj príklad chodí, ale v mojej aplikácii mám problémy, ktoré spočívajú asi vtom, že to makro nedokážem priradiť danému option buttonu. Maturujem nad tým, ale s veľkou guľou. Poradíš ako na to?
Dík

Pokud jde o to přiřadit to pojmenovávací makro pro OptionButton (ze sady Formuláře) tak stačí na něj kliknout pravým tlačítkem a v popup menu zvolit "Přiřadit makro", pak buď vybereš ze seznamu maker to pojmenovávací, anebo dáš vytvořit nové a pak mu tam vložíš ten pojmenovávací kód:
ActiveSheet.Shapes(Application.Caller).Name = "OB1"
M@

Ďakujem,
s jedným prepínačom to funguje. Pridal som ďalšie dva prepínače. Priradil som im makro s novými menami. V makre pre zviditeľnovanie prepínačov som zaviedol pre každý prepínač podmienku cez iné bunky. Nefunguje.
Uvádzam pre dva prepínače.
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D5") > 0 Then
ActiveSheet.Shapes("OB1").Visible = True
Else
ActiveSheet.Shapes("OB1").Visible = False
End If
If Range("D7") > 0 Then
ActiveSheet.Shapes("OB2").Visible = True
Else
ActiveSheet.Shapes("OB2").Visible = False
End If
End Sub
Public Sub pojmenuj()
ActiveSheet.Shapes(Application.Caller).Name = "OB1"
End Sub
Public Sub pojmenuj2()
ActiveSheet.Shapes(Application.Caller).Name = "OB2"
End Sub
Kde robím chybu? Ďakujem

Zkus přiložit přílohu, mrknu se, takhle to vypadá dobře, tak to bude v něčem jiném.
M@

Na tom istom liste mám ešte samostatne makro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$M$3" Then
Call HIDE
End If
End Sub
ktoré keď vymažem, tak to chodí. Potrebujem však mať obidve.

Takže kód vypadá nějak takto:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D5") > 0 Then
ActiveSheet.Shapes("OB1").Visible = True
Else
ActiveSheet.Shapes("OB1").Visible = False
End If
If Range("D7") > 0 Then
ActiveSheet.Shapes("OB2").Visible = True
Else
ActiveSheet.Shapes("OB2").Visible = False
End If
If Target.Address = "$M$3" Then
Call HIDE
End If
End Sub
Nevím co dělá ten HIDE (asi něco schovává :-) ), ale může záležet i na tom kde v kódu je umístěn (podle toho co dělá).
M@

Čuduj sa svete, to isté som urobil aj ja a mne to nechodilo. Teraz som natvrdo skopíroval Tvoje makro a klape to. Zrejme som u seba ešte niečo mal naviac. Včera som s tým zabil takmer celý deň. Srdečná vďaka.
Ešte k tomuto jeden dotaz. Ak mám takýchto prepínačov viac (15), nešlo by zviditeľňovanie urobiť v cykle? Inak je to veľa písania a je to dosť neprehľadné. Dík