一切都在 Siddharth Rout 答案中;我将进行更详细的解释。
缺陷是 x 未声明,因此 VB 使用Variant
. 你需要 x 是一个Range
类型,所以你可以引用它的Cells
属性。因此,您应该这样声明。
Dim x as Range
作为第一行插入sub1
。然后,您必须使用Set
关键字分配给 x :Set x = Range("test")
Set
是用于分配对象的语法。
此外,该Cells
属性是 的默认属性Range
。因此,不需要明确地写出来。
For each i in x
分配给 iaRange
对象,它是范围 x 的第 i 个单元格。所以你可以在 i 上应用计算。
现在最后一件事:Calculate
可以应用于单个单元格或范围。因此, x.Calculate 可以工作(不需要循环)。
这给出了:
Sub sub1()
Dim x as Range
Dim i as Range
Set x = Range("Test")
For Each i In x
i.Calculate
Next i
End Sub
或更简单:
Sub sub1()
Dim x as Range
Set x = Range("Test")
x.Calculate
End Sub
如果“计算”是用户函数:
Sub sub1()
Dim x as Range
Dim i as Range
Set x = Range("Test")
For Each i In x
Call CalculateMyPurpose(i)
Next i
End Sub
Sub CalculateMyPurpose(myCell as Range)
'Do something on myCelll
End Sub
注意:我建议您声明所有变量。这将确保它们具有您想要的类型。要强制执行变量声明,请写Option Explicit
为模块的第一行。