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で画像の名前を指定するときに間違うことがなくなります。
コメント
[…] Excel VBA入門 その93:クリックしたオブジェクトの名前の取得方法 […]