VBAサンプル集
ボタンに表示されているテキストを取得(Application.Caller)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日:2021-01-29

ボタンに表示されているテキストを取得(Application.Caller)

メニューのシートを作成して、ボタンを配置、そしてボタンにより指定シートに移動する。
よくありますが、ボタン一つずつに別々(移動先のシート毎に)のマクロを作成するのは面倒です、
そこで、
一つのマクロで済ませる方法の紹介です。



Application.Caller

Application.Callerは、VBAを呼び出した方法についての情報を返します。
ボタンから呼ばれた時は、そのボタン名がString型で返されます。
ユーザー定義関数として呼ばれた場合は、数式を入れたセルがRangeオブジェクトで渡されます。



Sub sample()
  Select Case TypeName(Application.Caller)
    Case "String"
      'ボタンから呼ばれた
    Case "Range"
      Debug.Print "ユーザー定義関数として呼ばれた"
      Exit Sub
    Case Else
      Debug.Print "不明な呼ばれ方"
      Exit Sub
  End Select
  On Error Resume Next
  Sheets(ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text).Select
  If Err Then
    MsgBox "ボタン表示のシートがありません。"
  End If
End Sub

このマクロVBAなら、どのボタンでもボタンのテキストと同一のシートに移動出来ます。

Application.Caller
これで、クリックされたボタンを特定しています。

ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
これで、クリックされたボタンのテキストを取得しています。

後は、SheetsのSelectだけです。

注意点としては、
ボタンのテキストと同一のシートが存在しない場合はエラーとなります。
もっとも、最初に作るときだけしか発生しないエラーではありますが。


メニューのシートを作成するときは、とても便利なはずです。
ぜひ使ってみてください。

ボタンからプロシージャーに引数を渡す

上では、ボタンに表示されている文字列で分岐させましたが、
ボタンへ登録する時に、引数を指定することもできます。

'プロシージャー名 "引数"'
'sample2 "Sheet2"'

このように、'(シングルクォート)で囲みその中に渡す引数を指定します。

プロシージャーがPrivateの場合は、モジュール名で修飾してください。

'モジュール名.プロシージャー名 "引数"'
'Module1.sample2 "Sheet2"'


マクロ VBA 押されたボタンを取得

Private Sub sample2(ByVal arg)
  On Error Resume Next
  Sheets(arg).Select
  If Err Then
    MsgBox "ボタン表示のシートがありません。"
  End If
End Sub





同じテーマ「マクロVBAサンプル集」の記事

指定セルに名前定義されているか判定する
Excel2003(xls)を2007以降(xlsx,xlsm)に変換する(HasVBProject)
ハイパーリンクからファイルのフルパスを取得する
ボタンに表示されているテキストを取得(Application.Caller)
Excelの表をPowerPointへ図として貼り付け
VBAで表やグラフをPowerPointへ貼り付ける
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除
Shift_JISのテキストファイルをUTF-8に一括変換
VBAコードの全プロシージャー・プロパティ一覧を取得
数式バーの高さを数式の行数で自動設定
図形オートシェイプ(Shape)の複数選択


新着記事NEW ・・・新着記事一覧を見る

変数を考えることはロジックを考える事|エクセル雑感(2021-04-11)
RangeオブジェクトのFor EachとAreasについて|VBA技術解説(2021-04-08)
PropertyのSetはLetでも良い|VBA技術解説(2021-03-31)
エクセル麻雀ミニゲーム|VBAサンプル集(2021-03-09)
VBA100本ノック 100本目:WEBから100本ノックのリストを取得|VBA練習問題(2021-03-03)
VBA100本ノック 魔球編:2桁の最小公倍数|VBA練習問題(2021-02-02)
Select Caseでの短絡評価(ショートサーキット)の使い方|VBA技術解説(2021-01-03)
VBA100本ノック 迷宮編:巡回セル問題|VBA練習問題(2020-12-31)
VBA100本ノック 魔球編:閉領域の塗り潰し|VBA練習問題(2020-12-16)
VBA100本ノック 魔球編:組み合わせ問題|VBA練習問題(2020-12-02)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.RangeとCellsの使い方|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
9.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ