Vba 带参数的调用过程

Vba 带参数的调用过程,vba,Vba,我有一个程序: Sub a_fillValueByCells(sheet As Worksheet, v As String) Set cellNames = produceCellNames(Row, cs) For Each cell In cellNames MsgBox cell Next End Sub 我想称之为: Set localSheet = ActiveSheet Dim v As String Set v = dataSheet.R

我有一个程序:

Sub a_fillValueByCells(sheet As Worksheet, v As String)
    Set cellNames = produceCellNames(Row, cs)
    For Each cell In cellNames
        MsgBox cell
    Next
End Sub
我想称之为:

Set localSheet = ActiveSheet
Dim v As String
Set v = dataSheet.Range(cellName("B", Row))    
a_fillValueByCells (localSheet, v)
但我在编辑时间的最后一行出错:

预期:=

如果我删除最后一个参数:

a_fillValueByCells (localSheet)
为什么我会收到错误消息以及如何修复它?
谢谢

设置v=dataSheet.Range(cellName(“B”,行))
更改为

v=dataSheet.Range(cellName(“B”,行)).Text


由于您返回的是范围而不是字符串。

我通过更改以下内容解决了问题:

a_fillValueByCells (localSheet, v)

更新

我找到了另一个解决方案-只需删除括号:

a_fillValueByCells localSheet, v

对不起,字符串不需要设置
v=dataSheet.Range(cellName(“B”,Row))。Text
应该可以。我认为您的方法名称令人困惑。考虑将<代码> AyfIValueValueBys<代码>改为<代码> fyValueByCys<代码>。另外,
\uuu
下划线使它看起来像是
的事件
fillValueByCells
的事件处理程序,其中在实例级别声明了事件
对象
a
;这是VB6/VBA在事件处理程序中使用的惯例。如果你想保留括号,你也可以在方法调用之前添加
Call
,但那是过时的,相当难看。荣誉(+1)因为你自己找到了一切:)
a_fillValueByCells localSheet, v