2014-01-15 59 views
1

這可能很簡單,但我最近剛開始使用VBA。所以我定義了大約10行的單列範圍,並將其命名爲CB_CL_Values如何更改指定範圍內的特定值

可以說範圍{1,2,1,3,2,1,1,1,1,3}而現在它的成立範圍的每一個值更改爲1

Sub Unit_Options_Reset() 
    Range("CB_CL_Values") = 1  
End Sub 

可以說,我只想4更改值,以該範圍的10和離開第一個3,因爲它們是。我怎麼寫這個?

+1

'範圍(「CB_CL_Values」)。細胞(4 ).Resize(7,1).Value = 1'或'Range(Range(「CB_CL_Values」)。cells(4),Range(「CB_CL_Values」)。cells(10))''假設activesheet是你的命名範圍正在坐。 –

+0

+ 1 @TimWilliams:我也想過調整大小,但這對於非連續的單元格不起作用。例如,1,4,7 –

+0

正確 - 但如果它是一個多區域範圍,那麼您的Cells()方法也有問題;-)如果我將範圍「tester」定義爲「A1,A3」,那麼單元格(2, 1)是A2 ... –

回答

1
Range("CB_CL_Values").cells(4).Resize(7,1).Value=1 

Range("CB_CL_Values").cells(4)是您定義範圍內的第4個單元格。默認情況下,Cells(r)(帶一個參數)將第r個單元格在整個範圍內進行計數,然後在您的範圍內進行計算,所以如果您的範圍超過一列寬度,則應使用Siddharth的符號(例如).Cells(r,1)(第r'行,第1列)。

需要注意的是,如果你試圖解決一個cewll這在技術上是不是在你的範圍例如爲:

Range("A1:A10").Cells(20) 

Excel將不會抱怨代碼將引用A20。

.Resize(7,1)需要該第四小區和擴展的範圍內,以在高度7行和一列寬(調整大小總是向下展開,並從起點向右)

+0

+ 1 Phew!最後:D –

1

您可以使用該範圍的.Cells屬性來尋址單個單元格。對於多個單元格,您可以使用循環。

Range("CB_CL_Values").Cells(r, 1).Value = "Something" 

哪裏r是說3第三排。