|
新規ブック(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のコメント化を外した箇所は、再度コメント化してから実行する)
正常に作動しますが・・・。
変数の型は、なるべく詳細に宣言するという記述を目にしますが、
それとは、矛盾する現象です。
不思議ではないですか?
|
|