1、主體不同
CELLS(y,x)的兩個參數分別為行和列。
Range()則是指一個知區域。
2、范圍不同
CELLS(y,x)是單個單元格對像。
Range()可以是一個單元格,也可以是多個單元格。
3、賦值不道同
Cells()是對一個單元格賦值。
而Range()則可以對一個區域的所有單元格賦值。
注意:VBA中“回Range(cells(y1,x1),cells(y2,x2)).Select”,就是指選中以cells(y1,x1)和cells(y2,x2)兩單元格為對角線的一個區域。
CELLS(y,x)是單個單元格對像,兩個參數分別為行和列;
Range()則是指一個區域,區域中可以是一個單元格,也可以是多個單元格。
VBA中常這樣寫:Range(cells(y1,x1),cells(y2,x2)).Select,就是指選中以cells(y1,x1)和cells(y2,x2)兩單元格為對角線的一個區域。
----------------
賦值的話,如下幾句都是賦值的,區別還是一樣,Cells()是對一個單元格賦值,而Range()則可以對一個區域的所有單元格賦值:
Range("A1:D10").FormulaR1C1 = "10"
Range("A1:D10").Value = 100
Range("A13").Value = 1
Cells(13, 1).FormulaR1C1 = "10"
Cells(13, 1).Value = 100
說不上哪更好,要看你的需求,通常哪個隨手就用哪個了。
---------------------
是的,Value在多數時候是可以省略的。如下所示:
Range("A1:D9") = "123"
Cells(3, 3) = "300"
Worksheets("Sheet1").Range("A1") = 3.14159
但如下所示的第e799bee5baa6e79fa5e98193e59b9ee7ad9431333236383433二個.Value就不能省略,省略的話,不會報錯,但是結果不正確。
'本示例在 Sheet1 上的單元格區域 A1:D10 中進行循環。如果這些單元格中的某個值小於 0.001,則將其值替換為 0(零)。
For Each c in Worksheets("Sheet1").Range("A1:D10")
If c.Value < 0.001 Then
c.Value = 0
End If
Next c
有書上有對程序員的忠告,意思是這樣的:對可省略又可不省略的關鍵字,最好不要省略而是寫完整。這樣既增加程序的可讀性,又可避免歧義和錯誤。