私のワークブックには、VBE の各コンポーネントに対して 2 つの異なる名前があることに気付きました。name1 と name2 の違いは何ですか? マクロが確実に機能するようにするには、どちらを参照すればよいですか?
Control
はシートのコード名、 はシートPlan 1
のタブ名です。後者はユーザーが簡単に変更できるため、可能であればコードネームを使用する方が安全です。たとえば、次を参照してください。
control.range("A1:A10")
それよりも:
sheets("Plan 1").Range("A1:A10")
そのワークブックのプロジェクトへの参照を設定するか、コード名プロパティをテストする他のワークブックの各シートをループする関数を使用しない限り、コードを含むワークブック以外のワークブックのシートを参照するためにシート コードネームを使用できないことに注意してください。それぞれ。
「Plan1」はタブ名で、ワークシートの下部にあるタブに表示されます。
「Control」はコード名で、VBA で特定のワークシート オブジェクトを直接参照するために使用できます。
Sheets("Plan1").Cells(1, 1).Value
Control.Cells(1, 1).Value
同じ出力が生成されます。
VBE の各ドキュメント タイプの vbComponent にはName
と がありCodeName
ます。
Name
Excel UI のシート タブに表示される名前です。CodeName
VBA でシート オブジェクトを参照できる名前です。例:
Sub Names()
Debug.Print Control.Name 'Prints "Plan 1"
Debug.Print Control.CodeName 'Prints "Control"
'This approach uses the sheet name in a call to `Sheets`,
' which will break if a user changes the name of the sheet
'The sheets collection returns an object, so you don't get
' Intellisense, or compile-time error checking
Debug.Print Sheets("Plan 1").Name 'Prints "Plan 1"
Debug.Print Sheets("Plan 1").CodeName 'Prints "Control"
End Sub