| 
    
     |  | ▼ケイ さん: 
 こんにちは
 
 時折、ユーザーフォームモジュールが【特定のシート】配下にあるような
 イメージをもたれる方がいらっしゃいますね。
 
 エクセル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
 
 
 |  |