|
変数myV の型を Variant で行くか、Rangeで行くかでも
挙動が変わってきますね
--------------------------------------- ケース2
[変数myV はVariant]
Sub Variant_Case2()
Dim myV As Variant
Set myV = Range("B4:G4")
myV = 123 '[B4:G4] 変化なし
End Sub
[変数myV はRange型]
Sub Range_Case2()
Dim myV As Range
Set myV = Range("B4:G4")
myV = 123 '[B4:G4]が123に変わる!
End Sub
Range型にすると、
Let myV.Value = 123
と解釈されてるようです。
--------------------------------------ケース1
[変数myV はVariant]
Sub Variant_Case1()
Dim MyRange As Range
Set MyRange = Range("B4:G4")
MyRange.Value = Split("あ い う え お か") '初期化
Dim myV As Variant
Set myV = MyRange
myV = 123 '[B4:G4] 変化なし
MyRange = myV '← ◆ どのセルにも 123 が代入される
End Sub
変数myV は、はじめ
> Set myV = MyRange
として Rangeオブジェクトをセットしていますが、
次のステートメント
> myV = 123
では それとは関係なく 値が代入されているようです。
[変数myV はRange型]
Sub Range_Case1()
Range("B4:G4").Value = Split("あ い う え お か") '初期化
Dim myV As Range
Set myV = Range("B4:G4")
myV = 123 'Range型にすると[B4:G4]が123に変わる!
End Sub
---------------------------------------------------sample1
Sub sample1()
Dim MyRange As Range
Set MyRange = Range("B4:G4")
MyRange.Value = Split("あ い う え お か") '初期化
Dim myV As Variant
Set myV = MyRange
myV.Value = 123 '[B4:G4]に123が代入される
MyRange = myV '◆MyRangeには Emptyが代入される
End Sub
このときは
> Set myV = MyRange
でmyVに Range型 がセットされ、なおかつ
> myV.Value = 123 '[B4:G4]に123が代入される
で 変数myV をセットしたRangeオブジェクトとして使っているので
値(123) が myV.Valueにセットされたのでしょうか?
それで
> MyRange = myV '◆MyRangeには Emptyが代入される
の行で MyRange.Valueが空白になるのは、
「左辺は配列の値(Value)を要求しているのに右辺はRangeオブジェクトで
配列では無いため、無効なデータとしてEmptyが代入される仕様」
によるものでしょうか?
|
|