2016-11-17 11 views
0

分離された範囲の値をループ以外のバリアントに入れるより良い方法はありますか?分離された範囲の値を取得するobjet

Dim vntValues As Variant 
Set rg = Range("$D$3:$D$7,$D$9:$D$21") 
vntValues = rg.Value 
Debug.Print UBound(vntValues) 

出力は5ですが、18が正しいと思います。

+3

よう 'rg.Value'のみvntValues = rg.Areas(1).Value''に、rg' '内に、すなわち、それのデフォルト値を第一' Area'の値を返します。 'vntValues = rg.Areas(2).Value'と言うと、' UBound(vntValues) 'は13になります。 – YowE3K

+0

' vntValues'では何をしていますか? Value = Range( "E3:E21")。Value' doesn 'は、値を移動している場合、ソースを過度に選択してターゲットをまばらに選択するとうまくいきます:Range( "D3:D7、D9:D21" tは 'D8 'を上書きします。 – Comintern

+1

ループを使うだけです。メインコードを乱雑にしたくない場合は、関数に抽象化してください。 –

答えて

0

何か

Dim vntValues As Variant 
Dim rng2 As Range 

Set rg = Range("$D$3:$D$7,$D$9:$D$21") 

For Each rng2 In rg.Areas 
    vntValues = rng2.Value2 
    Debug.Print UBound(vntValues) 
Next 
関連する問題