|
▼kobasan さん:
アドバイスありがとうございます。せっかくですが、私はVBAの方は初級レベルなので下記のような長いコードでは私の読解力の限界を超えています。
TrueではなくVisibleでしたか?しかし、
Controls(2).Controls(10)=Visible
として実行すると、「変数が定義されていません。」とのエラーが表示されてしまいました。どうしたら宜しいでしょうか?
>katchin さん おはようございます。
>表示しないなら Visible 、グレー表示なら Enabled のプロパティを使います。
>
>Controls(2).Controls(10) という形なのでControlsを多用したメニューバーでサンプルを作りました。これで分ってください。
>
>
>'新規メニューバーの作成
>Sub Menu_Add()
>Dim menu, btn
> Del_MenuBar
> CommandBars.Add ("New_Bar")
> '
> '===================================================================1列目(Popupにする)
> Set menu = CommandBars("New_Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
> With menu
> .Caption = "menu_A"
> '------------------1列1行目(Button)
> .Controls.Add Type:=msoControlButton
> .Controls(1).Caption = "menu_A1"
> .Controls(1).OnAction = "macroA1"
> '------------------1列2行目(Button)
> .Controls.Add Type:=msoControlButton
> .Controls(2).Caption = "menu_A2"
> .Controls(2).OnAction = "macroA2"
> End With
> '
> '===================================================================2列目(Popupにする)
> Set menu = CommandBars("New_Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
> With menu
> .Caption = "menu_B"
> '------------------2列1行目(Button)
> .Controls.Add Type:=msoControlButton
> .Controls(1).Caption = "menu_B1"
> .Controls(1).OnAction = "macroB1"
> '------------------2列2行目(Button)
> .Controls.Add Type:=msoControlButton
> .Controls(2).Caption = "menu_B2"
> .Controls(2).OnAction = "macroB2"
> End With
> '
> '======================================================3列目(Button)
> Set btn = CommandBars("New_Bar").Controls.Add(Type:=msoControlButton)
> With btn
> '.Style = msoButtonIcon
> .Style = msoButtonIconAndCaption
> .FaceId = 480
> .Caption = "1列2行目ボタンのTrue,False切り替え"
> .OnAction = "Menu_C"
> End With
> '
> CommandBars("New_Bar").Visible = True
> Set menu = Nothing: Set btn = Nothing
>End Sub
>
>Sub Del_MenuBar()
>Dim c As CommandBar
> For Each c In CommandBars
> If c.Name = "New_Bar" Then CommandBars("New_Bar").Delete
> Next
>End Sub
>
>Sub auto_close()
> Del_MenuBar
>End Sub
>
>Private Sub Menu_C()
>Dim Mybtn
> '表示しないなら .Enabled を .Visible に変更してください
> 'グレー表示なら .Enabled
> With CommandBars("New_Bar").Controls(1).Controls(2)
> If .Enabled = False Then
> .Enabled = True
> Else
> .Enabled = False
> End If
> End With
>End Sub
>
>
>>メニューバーを開くと多くの機能が通常アクティブになっていますが、以前どなたかから、例えば左から2列目編集メニューの上から10番目の「削除」をノンアクティブにしたい時、Controls(2).Controls(10) = False
>>つまり、m列目のメニューバーのn番目の機能をノンアクティブにしたいとき、
>>Controls(m).Controls(n) = False また、逆にノンアクティブにした機能をアクティブに戻すとき、False を True に。 左辺のプロパティの式が定かではないので、再現を試みましたらやはり上手く行きませんでした。どこかが微妙に間違っているのだろうと思われますがまだ判りません。
>>どなたか正確にご教示くださいませ。
>>
|
|