2012-10-04 221 views
6

我相信我所要做的很簡單。我想迭代Range參數並更改該範圍中每個單元格的值。Excel VBA:遍歷範圍參數和更改單元格值

Function test(thisRange As Range) 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Function 

以上是我想要做的一個簡單的例子,但似乎沒有工作。當我調試時,Excel似乎在碰到c.Value = 1時發生錯誤。爲什麼這不起作用?

+1

它適合我。你打電話過得怎麼樣?希望不是從工作表中作爲UDF? –

+0

確保您將c聲明爲Range。 – RBarryYoung

+0

是否需要循環每個單元格?你可以使用'thisRange.Value = 1' – user3357963

回答

3

這對我的作品

Option Explicit 

Sub Sample() 
    Dim ret 
    ret = test(Sheets("Sheet1").Range("A1:A15")) 
End Sub 

Function test(thisRange As Range) 
    Dim c As Range 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Function 

順便說一句,我們並不需要使用的功能。一個函數用於返回一個值。試試這個

Option Explicit 

Sub Sample() 
    test Sheets("Sheet1").Range("A1:A15") 
End Sub 

Sub test(thisRange As Range) 
    Dim c As Range 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Sub 
+0

是的,這確實有效。再次感謝你,我把這個函數稱爲UDF,這是我的問題。 – stevebot

+0

是的,正如我在之前的評論中提到的那樣,您不能將其用作UDF :) –