|
▼ケイ さん:
こんにちは
時折、ユーザーフォームモジュールが【特定のシート】配下にあるような
イメージをもたれる方がいらっしゃいますね。
エクセルVBAには様々なモジュールがあるわけですが、シートモジュール以外は
各シートは、それらモジュールから見て、【並列】です。
ですから、たとえば Range("A1").Value とだけ記述すると、
【たまたまその時にアクティブになっているシートのA1】を参照します。
複数シートがあり、つねに、ある特定のシートの値を参照する場合は
特定のシート.Range("A1").Value というように、【シート修飾】をしてやる
必要があります。
シート修飾はいろいろな記述方法がありますが、2つほど。
1)With を使います。セル範囲記述の前に .(ピリオド)を付加します。
With Sheets("Sheet1")
TextBox1.Value = .Range("A1").Value
Label1.Caption = .Range("A2").Value
End With
2)シートオブジェクトを使います。
Dim sh As Worksheet
Set sh = Sheets("Sheet1")
TextBox1.Value = sh.Range("A1").Value
Label1.Caption = sh.Range("A2").Value
Set sh = Nothing
|
|