|
▼カリーニン さん:
>逆に、私は最初、シェイプを選択したら名前ボックスにシェイプの名前が出る
>ので、そこで判定できるかも、と考えたのですが、定義した名前の一覧に
>シェイプの名前が出てこなかったので使えませんでした。
これは、Shapesコレクションをグルグル回す(For Each等で)と、
既定名(名前ボックスの名)では、検索できない という意味ですよね?
既定名で運用すると、二つの名前を持ってしまいますからねえ!!
Excelを起動した直後に 新規ブックの標準モジュールに
Option Explicit
Sub test()
Dim rect As Object
With ActiveSheet
Set rect = .Rectangles.Add(50, 50, 50, 50)
MsgBox .Shapes("正方形/長方形 1").Name
Debug.Print .Shapes("正方形/長方形 1").Name
rect.Name = "ichinose"
MsgBox .Shapes(rect.Name).Name
MsgBox .Shapes("正方形/長方形 1").Name
MsgBox .Shapes("Rectangle 1").Name
End With
Set rect = Nothing
End Sub
上記のコードを実行してみると、わかるように
新規に作成した四角形には 正方形/長方形 1 なんて名前が命名されます。
これのVBAで参照可能な既定名は Rectangle 1 になります。
この四角形の名前を ichinose に代えた後も
正方形/長方形 1 や Rectangle 1 という既定名でもオブジェクトを取得できてしまいます。
この辺りの事を考慮すると、仕様をどのようにするのか ということも結構重要になってきますね
|
|