|    | 
     >新規ブックの標準モジュールに 
> 
>'=============================================================== 
>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プロパティは、 
 | 
     
    
   |