プロが教えるわが家の防犯対策術!

配列に数字(特段数字でなくても)入れたいのですが、以下のように書きました。

Sub test()
Dim x As Variant
Dim m(1 To 10) As Integer

For Each x In m
x.Value = 100
Next
Stop

End Sub

Stopでとめてmを確認するとすべて0です。どうしてなのでしょうか。

配列ではなく

Sub test()
Dim x As Variant

For Each x In range("a1:a10")
x.Value = 100
Next

End Sub

とするとA1:A10には100が入ります。

この差がいまいちわからなくて、

もちろんFor ・・・ Nextで簡単に入れられるのは承知しています。

補足ですが
また最初はx.valueの.valueをつけていなかったのでセルにも反映されませんでしたが.valueをつけると入りました。

A 回答 (1件)

前者は、


> x.Value = 100
ではなく、
> x = 100

ですよね?
これは、
-------------------------------
For I=LBound(m) To UBound(m)
x = m(I)
x = 100
Next
-------------------------------
と同じ様な動作です。
変数xを上書きしているだけで、mには影響がありません。

後者は、同様に、
--------------------------------
For I=1 To 10
Set x = range("a1:a10").Cells(I,1)
x.Value = 100
Next
--------------------------------
と同じ様な動作です。普通に変更されます。
    • good
    • 0
この回答へのお礼

for each ・・・ in ~
~はコレクション(オブジェクト)じゃ無くてはだめだったんですね。
Setステートメントで理解できました。
ありがとうございます。

お礼日時:2007/09/05 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!