Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10583 / 13644 ツリー ←次へ | 前へ→

【20981】2段目のメニューを作る方法について kobasan 05/1/5(水) 17:57 質問[未読]
【20984】Re:2段目のメニューを作る方法について ichinose 05/1/5(水) 20:22 回答[未読]
【20985】Re:2段目のメニューを作る方法について bykin 05/1/5(水) 20:33 回答[未読]
【20986】Re:2段目のメニューを作る方法について kobasan 05/1/5(水) 21:25 お礼[未読]

【20981】2段目のメニューを作る方法について
質問  kobasan  - 05/1/5(水) 17:57 -

引用なし
パスワード
   1段目のメニューを作る方法は以前の記事で分かったのですが、
2段目のメニューを作る方法が分かりません。
(???のところをどう作ればよいのか分かりません)
よろしくお願いします。
-------------------
追加メニューの構造
 Menu_1A
 Menu_1B + menu_2A
       + menu_2B
-------------------
Sub test()
  'MenuBarをReset
  Application.CommandBars("Worksheet Menu Bar").Reset
  '-----
  Set 追加Menu = CommandBars("Worksheet Menu Bar").Controls.Add(Type:= _
    msoControlPopup, temporary:=True)
    追加Menu.Caption = "追加メニュー"
  '------------------------------------サブメニューの項目(1段目)
  Set Menu1 = 追加Menu.Controls.Add
  With Menu1
    .Caption = "Menu_1A"
    .FaceId = 481
    .OnAction = "macro1A"
  End With
  '-----
  Set Menu1 = 追加Menu.Controls.Add  '<===???
  With Menu1
    .Caption = "Menu_1B"
  End With
  '
  '----------Menu_1Bにメニューを追加(2段目)<==ここからわからない???
  'set menu2 = ****** '<===???
  'With menu2
  '  .Caption = "Menu_2A"
  '  .FaceId = 485
  '  .OnAction = "macro2A"
  'End With
  '-----
  'set menu2 = ****** '<===???
  'With menu2
  '  .Caption = "Menu_2B"
  '  .FaceId = 486
  '  .OnAction = "macro2B"
  'end with
End Sub

【20984】Re:2段目のメニューを作る方法について
回答  ichinose  - 05/1/5(水) 20:22 -

引用なし
パスワード
   ▼kobasan さん、皆さん、今年もよろしくお願いします。


>1段目のメニューを作る方法は以前の記事で分かったのですが、
>2段目のメニューを作る方法が分かりません。
>(???のところをどう作ればよいのか分かりません)
>よろしくお願いします。
>-------------------
>追加メニューの構造
> Menu_1A
> Menu_1B + menu_2A
Menu_1BもPopupにしてしまうと言うことですね?

>       + menu_2B
>-------------------
>Sub test()
>  'MenuBarをReset
>  Application.CommandBars("Worksheet Menu Bar").Reset
>  '-----
>  Set 追加Menu = CommandBars("Worksheet Menu Bar").Controls.Add(Type:= _
>    msoControlPopup, temporary:=True)
>    追加Menu.Caption = "追加メニュー"
>  '------------------------------------サブメニューの項目(1段目)
>  Set Menu1 = 追加Menu.Controls.Add
>  With Menu1
>    .Caption = "Menu_1A"
>    .FaceId = 481
>    .OnAction = "macro1A"
>  End With
>  '-----
  Set Menu1 = 追加Menu.Controls.Add(Type:= _
    msoControlPopup, temporary:=True)
  With Menu1
    .Caption = "Menu_1B"
  End With
  '
  '----------Menu_1Bにメニューを追加(2段目)<==ここからわからない???
  Set menu2 = Menu1.Controls.Add
  With menu2
    .Caption = "Menu_2A"
    .FaceId = 485
    .OnAction = "macro2A"
  End With
  '-----
  Set menu2 = Menu1.Controls.Add
  With menu2
    .Caption = "Menu_2B"
    .FaceId = 486
    .OnAction = "macro2B"
  End With
>End Sub
でどうでしょうか?

【20985】Re:2段目のメニューを作る方法について
回答  bykin  - 05/1/5(水) 20:33 -

引用なし
パスワード
   あけましておめでとうさんです。

オブジェクト変数使ったりするから、かえってややこしゅうなってまうんです。
Withを組み合わせればメニュー構造そのままのイメージをコードにすることができまっせ。

↓こんなんかな?・・・ノーチェックでっけど。

Sub test()
  With Application.CommandBars("Worksheet Menu Bar")
    .Reset
    With .Controls
      With .Add(Type:=msoControlPopup, Temporary:=True)
        .Caption = "追加メニュー"
        With .Controls
          With .Add
            .Caption = "Menu_1A"
            .FaceId = 481
            .OnAction = "macro1A"
          End With
          With .Add(msoControlPopup)
            .Caption = "Menu_1B"
            With .Controls
              With .Add
                .Caption = "Menu_2A"
                .FaceId = 485
                .OnAction = "macro2A"
              End With
              With .Add
                .Caption = "Menu_2B"
                .FaceId = 486
                .OnAction = "macro2B"
              End With
            End With
          End With
        End With
      End With
    End With
  End With
End Sub

試してみてな。
ほな。

【20986】Re:2段目のメニューを作る方法について
お礼  kobasan  - 05/1/5(水) 21:25 -

引用なし
パスワード
   ▼ichinose さん,bykinさん 今晩は

早々に解答有り難うござます。

Menu_1BもPopupでOKです。

どちらのも、私が目指した動きをしました。
助かりました。有り難うございます。

今年もよろしくお願いします

10583 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free