VBAで画像(図形)をクリックしたときに「図形の名前」を取得するにはどのようにすればよいのでしょうか?
今回は、クリックした図形の名前の取得方法について徹底的に説明していきます。
画像(図形)の名前は2種類ある
画像(図形)の名前と言っても、じつは、図形の名前は以下のように2種類あります。
- 処理の名前
- 表示の名前
先にみなさんが求めているであろう結論から言うと、VBAで画像(図形)の名前を指定してマクロを実行するときは、「処理の名前」を指定します。
それでは、「処理の名前」と「表示の名前」の違いについて説明していきます。
下の図を見てください。これは、「処理の名前」と「表示の名前」が違う例です。
図形をクリックすると画面左上の名前ボックスには「楕円1」と表示されているにも関わらず、マクロで図形の名前を表示させると「Oval 1」と表示されます。
図形を作ったときには 自動で名前が付けられますが、この名前は「表示の名前」と「処理の名前」が違うのです。
名前がなぜか違うので混同しやすく、VBAで図形を扱う際に上手くできない原因の一つなのです。
それでは、2種類の名前の取得方法について、それぞれ説明していきます。
図形の名前1.「処理の名前」の取得方法
「処理の名前」は、VBAで図形の名前を指定するときの名前になります。
上記の例ですと、VBAで図形を扱うときには「Oval 1」を指定します。
「処理の名前」の取得方法は、図形をクリック(選択)した状態で、以下のコードのマクロを実行します。
Sub 処理の名前取得()
MsgBox Selection.Name
End Sub
実行結果:
図形の名前2.「表示の名前」の取得方法
「表示の名前」は、図形をクリックしたときにエクセル表の左上の「名前ボックス」に表示される名前です。
「表示の名前」の取得方法は、取得したい図形に以下のコードのマクロを登録した後、対象の図形をクリックします。
Sub 表示の名前取得()
MsgBox Application.Caller
End Sub
実行結果:
「処理の名前」と「表示の名前」を同じにする
図形の名前には「処理の名前」と「表示の名前」の2種類がありますが、じつは、両者の名前を同じにすることができます。
それは、作成した図形に一つ一つに名前を付けることです。そうすると、表示の名前と 処理の名前が 同じになります。
名前の変更方法1:手入力で変更する
具体的には、エクセル上で図形をクリック(選択)して、左上の名前ボックスで任意の名前を手入力し、「Enter」キーを押すと、名前が変更され「処理の名前」と「表示の名前」が同じになります。
※名前を手入力した後に「Enter」キーを押さないと、変更されません。
名前の変更方法2:VBAで変更する
名前の変更は、VBAでも変更することができます。以下のコードでは、図形の名前を「だえん1」に変更しています。
Sub 名前変更()
Selection.Name = "だえん1"
End Sub
図形の名前を変更しておけば、「処理の名前」と「表示の名前」が同じになり、VBAで図形の名前を指定するときに間違うことがなくなります。
コメント