2016-11-17 75 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'只会内'rg'即它默认返回第一个'Area'的值,为'vntValues = rg.Areas(1).Value'。如果你说'vntValues = rg.Areas(2).Value',那么'UBound(vntValues)'是13. – YowE3K

+0

你用'vntValues'做什么?如果你正在移动数值,过量选择数据源和稀疏选择目标工作得很好:'Range(“D3:D7,D9:D21”)。Value = Range(“E3:E21”)。value' doesn' 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