Vba 在一系列单元格中循环

Vba 在一系列单元格中循环,vba,excel,Vba,Excel,我需要在c27中的每个单元格和右边的每个连续非空单元格上运行AddColumnofData函数,但是我得到了一个“需要运行时错误424对象”,非常感谢您的帮助 Set col = Range("$C$27", Range("$C$27").End(xlToRight)) For Each c In col AddColumnofData (c) Next c 如果您申报c: Dim c as Range 那么你所拥有的应该是有效的。如果你声明c: Dim c as Range 那

我需要在c27中的每个单元格和右边的每个连续非空单元格上运行AddColumnofData函数,但是我得到了一个“需要运行时错误424对象”,非常感谢您的帮助

Set col = Range("$C$27", Range("$C$27").End(xlToRight))

For Each c In col
    AddColumnofData (c)
Next c
如果您申报c:

Dim c as Range
那么你所拥有的应该是有效的。

如果你声明c:

Dim c as Range

那么你所拥有的应该是有效的。

假设你已经将
AddColumnofData
定义为

Sub AddColumnofData(c As Range)
    ...
End Sub
你对它的要求必须是

AddColumnofData c
(即拆下支架)


Jesse的建议是让变量变小,而不是变大。也适用于
col
。要使其符合要求,请将
选项显式添加到模块顶部。

假设您已将
添加列数据定义为

Sub AddColumnofData(c As Range)
    ...
End Sub
你对它的要求必须是

AddColumnofData c
(即拆下支架)


Jesse的建议是让变量变小,而不是变大。也适用于
col
。要使其更简单,请将
选项显式
添加到模块顶部。

您可以在将范围对象传递给函数之前声明或设置它们。要证明您正在向函数传递正确的值,请尝试以下操作

Dim r As Range '-- if you don't declare it as a range type you get a variant type as default
Dim c As Range '-- this is used to store the single cell in the For Each loop

Set r = Range("A1:D1") '-- substitute your range as per your example

For Each c In r '-- you could also use r.cells

    MsgBox c.Value '-- pass to your function instead of a call to the Message Box

Next

这将生成一系列4个消息框,其中包含活动工作表单元格A1到D1中的值,如果范围“r”非常大,则将其传递给Debug。改为打印。

在将范围对象传递给函数之前,可以声明或设置范围对象。要证明您正在向函数传递正确的值,请尝试以下操作

Dim r As Range '-- if you don't declare it as a range type you get a variant type as default
Dim c As Range '-- this is used to store the single cell in the For Each loop

Set r = Range("A1:D1") '-- substitute your range as per your example

For Each c In r '-- you could also use r.cells

    MsgBox c.Value '-- pass to your function instead of a call to the Message Box

Next

这将生成一系列4个消息框,其中包含活动工作表单元格A1到D1中的值,如果范围“r”非常大,则将其传递给Debug。改为打印。

另请参见调用另一个子集时如何使用(或不使用)括号以及如何使用(或不使用)调用另一个子函数时的括号是什么
AddColumnofData
做什么-我们可以优化您的函数速度?什么
AddColumnofData
做什么-我们可以优化您的函数速度?为什么在调用函数之前声明和设置对象?优点是,您可以先对范围内的单元格进行一些验证,可以连接单元格值等。您还可以将值作为字符串而不是范围传递。因此,您的函数可以处理字符串函数而不是范围对象。为什么在调用函数之前声明并设置对象?优点是,您可以先对范围内的单元格进行一些验证,可以连接单元格值等。您还可以将值作为字符串而不是范围传递。因此,您的函数可以处理字符串函数,而不是范围对象。