|
>新規ブックの標準モジュールに
>
>'===============================================================
>Sub main()
> Dim sht As Worksheet
> Set sht = Worksheets.Add
> MsgBox sht.CodeName
>End Sub
>
>上記のコードですが、VBEを起動した状態で実行すると
>正常に追加されたシートのオブジェクト名を表示しますが、
>VBEを起動していない状態で実行すると追加されたシートのオブジェクト名が
>表示されません(Msgboxでは、何も表示されません)。
新しいバグの発見かな!! と一瞬喜んだのですが(喜ぶことではなかった)、
確認したらいくつものサイトで紹介されていました。
シート名は、ユーザーが容易に変更出来てしまいますが、オブジェクト名までは
滅多に変更されないので簡単な作りのVBAコードではCodenameを引用すると
便利な場合がありますよね。
解決方法も既にそれぞれのサイトで出ていましたが、
私も一案。
'=================================================================
Sub main()
Dim sht As Worksheet
Set sht = Worksheets.Add
MsgBox get_codename(sht)
End Sub
'=================================================================
Function get_codename(sht As Worksheet) As String
CommandBars("Control Toolbox").FindControl(ID:=222).Execute
SendKeys "%{F4}", True
get_codename = sht.CodeName
End Function
上記のmainは、VBEが起動されていない状態でも正しく
Codenameが表示されました。
EXCEL2002で確認。
Codenameプロパティは、
|
|