|
ひげくま さん、yuu1 さん、こんばんは。
>>以下のようなかんじではどうでしょうか。
>>場合によっては不都合があるかもしれませんが。
>>
>> If VarType(Evaluate("xxx")) = vbObject Then
>> Debug.Print "存在したときの処理"
>> Else
>> Debug.Print "存在しなかったときの処理"
>> End If
>
これは、気が付きませんでした。
>
>実際にやってみて、上手く動作しました。
>
>ただ、Evaluateの使い方がいまいち理解できていなくて、
>「場合によっては不都合が…」というのがどういう場合なのか
>まったく想像できません。
>動作を把握していない関数を使うのは、後々大変なことになる
>かもしれないので、動作を把握してから使おうと思います。
上記のコードだとアクティブシートに対して有効です。
(又は、上記のコードを当該シートモジュールに配置した場合は、
当該シートがアクティブでなくても有効です)
Sub test()
If VarType(Worksheets("sheet1").Evaluate("四角形 2")) = vbObject Then
MsgBox "exist"
Else
MsgBox "not exist"
End If
End Sub
上記のようにシートオブジェクトのEvaluateメソッドを使うと、
標準モジュールでも又、アクティブシート以外でも
正しく作動してくれます。
ご参考までに!!
|
|