2016-11-17 72 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