|
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 に。 左辺のプロパティの式が定かではないので、再現を試みましたらやはり上手く行きませんでした。どこかが微妙に間違っているのだろうと思われますがまだ判りません。
>どなたか正確にご教示くださいませ。
>
|
|