0

所以,我希望做一個「更好的」參考一單元格範圍的SOA不具有複製/粘貼在我的方法,但下面的代碼不起作用:如何將單元格區域存儲到變量中?

Dim cellRange As Range 
' fieldIndex = 1, startRow = 10, lastRow = 20 
cellRange = s.Range(Cells(startRow, fieldIndex), Cells(lastRow, fieldIndex)) 

我缺少什麼?我可以用其他方式使用它只是罰款:

s.Range(Cells(startRow, fieldIndex), Cells(lastRow, fieldIndex)).Value = "bob" 
+2

您必須使用單詞'Set'來設置範圍。也看到這個鏈接,因爲你正在使用'Cells'對象http://stackoverflow.com/questions/14757265/excel-vba-error-copying-a-range-from-external-workbook/14763491#14763491 – 2013-02-08 14:40:18

回答

3

您需要使用Set的對象就像一個範圍:

Dim cellRange As Range 
' fieldIndex = 1, startRow = 10, lastRow = 20 
Set cellRange = s.Range(Cells(startRow, fieldIndex), Cells(lastRow, fieldIndex)) 
+0

這工作就像魅力!謝謝。爲什麼在這種情況下需要'Set'? – Jon 2013-02-08 14:56:38

+3

@Jon,看到這個SO回答關於'Set'關鍵字:http://stackoverflow.com/q/10196620/293078 – 2013-02-08 15:57:58

+0

嗨道格,謝謝,這導致我查詢什麼是默認成員,這導致我[本頁](http://www.cpearson.com/excel/DefaultMember.aspx),其中一個例子是頁面的底部,很好地說明了如何設置對象和默認成員。 – Jon 2013-02-22 13:19:26

2

正如希德建議您可能還需要澄清的細胞部分,如這例如。

With s 
    Dim cellRange As Range 
    ' fieldIndex = 1, startRow = 10, lastRow = 20 
    Set cellRange = .Range(.Cells(startRow, fieldIndex), .Cells(lastRow, fieldIndex)) 
End with 
+0

爲什麼會這樣(在'Cells'之前需要一個'。')? – Jon 2013-02-08 14:58:20

+0

上面的'With s'代碼表示它變成了's.Cells(...)'的等價物。如果沒有它的話,它並不重要,但是您可能會發現單元格有時沒有上下文,具體取決於您在做什麼。 – mattboy 2013-02-08 15:04:10