2

私のワークブックには、VBE の各コンポーネントに対して 2 つの異なる名前があることに気付きました。name1 と name2 の違いは何ですか? マクロが確実に機能するようにするには、どちらを参照すればよいですか?

ここに画像の説明を入力

4

3 に答える 3

5

Controlはシートのコード名、 はシートPlan 1のタブ名です。後者はユーザーが簡単に変更できるため、可能であればコードネームを使用する方が安全です。たとえば、次を参照してください。

control.range("A1:A10")

それよりも:

sheets("Plan 1").Range("A1:A10")

そのワークブックのプロジェクトへの参照を設定するか、コード名プロパティをテストする他のワークブックの各シートをループする関数を使用しない限り、コードを含むワークブック以外のワークブックのシートを参照するためにシート コードネームを使用できないことに注意してください。それぞれ

于 2015-03-25T11:14:40.997 に答える
2

「Plan1」はタブ名で、ワークシートの下部にあるタブに表示されます。

「Control」はコード名で、VBA で特定のワークシート オブジェクトを直接参照するために使用できます。

Sheets("Plan1").Cells(1, 1).ValueControl.Cells(1, 1).Value同じ出力が生成されます。

于 2015-03-25T11:15:49.027 に答える
0

VBE の各ドキュメント タイプの vbComponent にはNameと がありCodeNameます。

  • NameExcel UI のシート タブに表示される名前です。
  • CodeNameVBA でシート オブジェクトを参照できる名前です。

例:

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
于 2016-12-22T22:06:17.750 に答える