|    | 
     新規ブック(Sheet1というシートがある)にて、 
 
Sheet1のモジュールに 
 
'============================================================ 
Option Explicit 
Public 変数 As String 
 
'とこれだけ 
 
 
標準モジュール 
 
'============================================================== 
Option Explicit 
'============================================================== 
Sub test1() 
  Worksheets("sheet1").変数 = "aaa" 
  MsgBox Worksheets("sheet1").変数 
End Sub 
'============================================================== 
Sub test2() 
  Dim ws As Worksheet 
  Set ws = Worksheets("sheet1") 
  'ws.変数 = "bbb" 
  'MsgBox ws.変数 
End Sub 
'============================================================== 
Sub test3() 
  Dim ws As Object 
  Set ws = Worksheets("sheet1") 
  ws.変数 = "ccc" 
  MsgBox ws.変数 
End Sub 
 
 
test1のように記述すると、正常に作動し、Sheet1のオブジェクトに追加した 
変数 と言う名のプロパティの参照が出来ます。 
 
ところが、Worksheets("sheet1") と何回も記述するのが面倒なので、 
オブジェクト変数を介して、このプロパティを参照しようとして、 
 
test2のように記述して実行すると(コメント化を外して実行)、 
 
コンパイルエラー 
メソッドまたはデータメンバが見つかりません。 
 
というエラーメッセージが 
 
ws.変数 = "bbb" 
 
の箇所で表示されます。 
 
対処方法は、test3のように変数の型をObjectに代えて実行すれば 
(尚、test2のコメント化を外した箇所は、再度コメント化してから実行する) 
 
正常に作動しますが・・・。 
 
変数の型は、なるべく詳細に宣言するという記述を目にしますが、 
それとは、矛盾する現象です。 
 
不思議ではないですか? 
 
 | 
     
    
   |