在过程之间传递参数

Passing arguments between procedures

我有一些非常简单的代码,我试图将一个参数从一个子(调用父)传递给另一个;修改一些值,而不是修改其他一些值并完成。我似乎失败得很惨。不知道为什么。这是一些代码

Sub Parent_sub()
Dim v1,v2,v3 as Integer

 v1 = 0 
 v2 = -1
 v3 = -2
      Child_sub v1, v2, v3
  msgbox "the variables are " & v1 & " ," & v2 & ", and " & v3
End Sub

Sub Child_sub(ByVal c1 as Integer, ByRef c2 as Integer, ByRef c3 as Integer)

c1 = 3
c2 = 4
c3 = 5

End Sub

我很难理解为什么会出现编译错误(编译错误;ByRef 参数类型不匹配;它出现在 Child_sub 调用的 v2 参数上)。我将 Excel 2016 用于家庭和企业。有什么有用的提示吗?

只是为了避免一些可能很简单的回复;我没有定义两个具有相同名称 (!) 的子程序,变量也没有在代码中的其他任何地方进一步重新定义(选中)。对我来说这很奇怪。请帮忙,我是个白痴!

VBA 没有分号,因此您需要删除它们。这实际上是您的代码中唯一的语法错误。其他的只是功能。

Dim v1,v2,v3 as Integer 仅使 v3 成为整数。您需要为每个变量重复数据类型。

最后,如果你想让子子编辑你需要ByRef关键字的变量。您在 c2 和 c3 上使用了它,但没有在 c1

上使用
Sub Parent_sub()
Dim v1 As Integer,v2 As Integer,v3 as Integer

v1 = 0
v2 = -1
v3 = -2
  Child_sub v1, v2, v3
msgbox "the variables are " & v1 & " ," & v2 & ", and " & v3
End Sub

Sub Child_sub(ByRef c1 as Integer, ByRef c2 as Integer, ByRef c3 as 
Integer)

c1 = 3
c2 = 4
c3 = 5

End Sub