Excel VBA質問箱 IV

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

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


58818 / 76732 ←次へ | 前へ→

【22637】Re:オートシェイプにマクロを追記したいのでが...
発言  ichinose  - 05/2/25(金) 8:33 -

引用なし
パスワード
   ▼ponpon さん:
おはようございます。

>>マクロの対象となるオブジェクトの識別名が取得できます。
>>呼び出し方法によって返されるデータの種類も違うでしょう?
>
>わかったような、わからないような(^^;
>マクロを何が呼び出しているかがわかるってことかな?

Helpには、「Visual Basic を呼び出した方法についての情報を返します」
とあるのでそういう認識でよいかと思います。

但し、呼び出し方によってApplication.Callerで返されるデータも違うと言う事です。
Typename関数を使って識別する方法を私は良く見ますし、
私もApplication.Callerのデータタイプを調べる場合はこれを使っています。
Typename関数の詳細は、HELPでチェックしてみてください。

ユーザー定義のコマンドバーを作成して、
そこにいくつかのボタンを配置した場合に
登録したマクロにこのApplication.Callerを使用すると
配列を返してくれます。以下のコードは、その例です。
標準モジュールに
'===================================================
Const cbdnm As String = "サンプル"
Sub 設定1()
'サンプルというコマンドバーを作成し、その中に10個のボタンを配置します
  Dim cmdb As CommandBar
  Dim cmd As CommandBarControl
  Set cmdb = Application.CommandBars.Add(cbdnm)
  dd = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
  For idx = LBound(dd) To UBound(dd)
   cmdb.Visible = True
   Set cmd = cmdb.Controls.Add(msoControlButton)
   With cmd
    .Style = msoButtonCaption
    .Caption = dd(idx)
    .OnAction = "sample1"
    End With
   Next
 
End Sub
'===============================================================
Sub sample1()
'各ボタンに登録するマクロ
' msgbox typename(application.caller)
  If LCase(TypeName(Application.Caller)) = "variant()" Then
   c_inf = Application.Caller
   '配列を返します c_inf(1)---インデックス
   '        c_inf(2)---コマンドバーの名前
   With Application.CommandBars(c_inf(2))
    MsgBox .Controls(c_inf(1)).Caption & "のボタンが押されました"
    End With
   End If
End Sub
'=================================================================
Sub 設定消去()
'作成したコマンドバーを削除
  On Error Resume Next
  Application.CommandBars(cbdnm).Delete
  On Error GoTo 0
End Sub

他にも種類があるかもしれませんから、試してみてください。

0 hits

【22625】オートシェイプにマクロを追記したいのでが... はないきぴーぴー 05/2/24(木) 22:23 質問
【22627】Re:オートシェイプにマクロを追記したいのでが... ichinose 05/2/24(木) 22:40 発言
【22629】Re:オートシェイプにマクロを追記したいのでが... ponpon 05/2/24(木) 22:56 発言
【22631】Re:オートシェイプにマクロを追記したいのでが... ichinose 05/2/24(木) 23:11 発言
【22634】Re:オートシェイプにマクロを追記したいのでが... ponpon 05/2/24(木) 23:48 発言
【22635】Re:オートシェイプにマクロを追記したいのでが... はないきぴーぴー 05/2/25(金) 0:16 お礼
【22637】Re:オートシェイプにマクロを追記したいのでが... ichinose 05/2/25(金) 8:33 発言

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