2012-10-04 179 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 :) –