|    | 
     ▼りんご さん:こんにちは〜 
>・階層化したメニューを表示、そこから実行 
 
この部分に関してだけ。 
カスタムメニューバーを作成し、そこに「階層化したメニュー」を 
作成している例です。 
この例では、プロシージャ↓は ThisWorkBook に書いています。 
OnActionで 指定のマクロを呼び出すルーティンも 同じThisWorkbook 
内に書いています。 
 
Sub CustomMenu() 
  Dim myCBar As CommandBar 
  Const cbName = "User MenuBar"  '作成するメニューバーの名前 
   
  On Error Resume Next 
  Application.CommandBars(cbName).Delete 
  On Error GoTo 0 
   
  Set myCBar = Application.CommandBars.Add(Name:=cbName, _ 
    Temporary:=True)    
   
'-----[ファイル]メニューの作成 ----- 
  With myCBar.Controls.Add(Type:=msoControlPopup) 
    .Caption = "ファイル(&F)" 
   'サブメニュー[保存]コマンドの作成 
    With .Controls.Add(Type:=msoControlButton) 
      .Caption = "保存(&S)" 
      .OnAction = "ThisWorkbook.SaveBook" 
    End With 
   'サブメニュー[終了]コマンドの作成 
    With .Controls.Add(Type:=msoControlButton) 
      .Caption = "終了(&Q)" 
      .OnAction = "ThisWorkbook.QuitExcel" 
    End With 
    .BeginGroup = True     '区切り線の表示 
  End With 
   
'-----[オプション]メニューの作成 ----- 
  With myCBar.Controls.Add(Type:=msoControlPopup) 
    .Caption = "オプション(&O)" 
    .BeginGroup = True     '区切り線の表示 
   
    'サブメニュー[Excelメニュー]コマンドの作成 
    With .Controls.Add(Type:=msoControlButton) 
      .Caption = "Excelメニュー(&E)" 
      .OnAction = "ThisWorkbook.ResetMenuBar" 
    End With 
  End With 
   
'---- ツールバーの表示 ----- 
  With myCBar 
    .Visible = True 
    .Position = msoBarFloating ' msoBarTop 
  End With 
End Sub 
 
Private Sub SaveBook() 
  MsgBox "Save Book" 'プログラムを呼び出す 
End Sub 
Private Sub QuitExcel() 
  MsgBox "Quit Excel" 'プログラムを実行 
End Sub 
 
Private Sub ResetMenuBar() 
  MsgBox "Reset MenuBar" '処理を記述 
End Sub 
 
 | 
     
    
   |