0

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

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 用于家庭和企业。有什么有用的提示吗?

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

4

1 回答 1

0

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
于 2018-07-13T12:06:49.120 回答