VBA|クリックした画像の名前の取得方法

エクセルVBA VBAで画像・図・グラフの操作



VBAで画像(図形)をクリックしたときに「画像の名前」を取得するにはどのようにすればよいのでしょうか?

今回は、クリックした画像(図形)の名前の取得方法について徹底的に説明していきます。



画像(図形)の名前は2種類ある

画像(図形)の名前と言っても、じつは、画像の名前は以下のように2種類あります。

  1. 処理の名前
  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で画像の名前を指定するときに間違うことがなくなります。

コメント

  1. […] Excel VBA入門 その93:クリックしたオブジェクトの名前の取得方法 […]

タイトルとURLをコピーしました