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