英文:
Problem with calling a module from another module
问题
我在Excel 2016的Mac版本中使用VBA时,调用其他模块的模块时遇到了问题。
在一个工作簿中,我有2个模块:
Sub testsub()
Call xchart(a, b, c)
MsgBox a
End Sub
和
Sub xchart(a, b, c)
a = b + c
End Sub
当我运行第一个模块(testsub)时,我收到一个"编译错误。期望变量或过程而不是模块"的错误消息。
我做错了什么?我在其他工作簿中的某些地方使用了这个结构,有时可以正常工作,有时会出现相同的编译错误。
英文:
I am having trouble calling modules from other modules using VBA in excel 2016 on a mac.
In a workbook I have 2 modules:
Sub testsub()
Call xchart(a, b, c)
MsgBox a
End Sub
and
Sub xchart(a, b, c)
a = b + c
End Sub
When I run the first module(testsub) I get a "Compile error. Expected variable or procedure not a module"
What am I doing wrong? I have used this construct elsewhere in other workbooks and sometimes it works without a problem, sometimes it gives the same compile error.
答案1
得分: 2
调用一个过程
在VBA中,'those' 和 'these' 被称为 过程,它们位于 模块 中。
基本上,Sub 做一些事情,而 Function 返回一个结果。
Call 关键字被认为是已弃用的。
对于整数(整数(数学)),你可以使用类似以下的代码。
Option Explicit
Sub MyFirstCallingProcedure()
Dim b As Long: b = 1
Dim c As Long: c = 2
Dim a As Long: a = SumupTwoIntegers(b, c)
MsgBox a
End Sub
Function SumupTwoIntegers(ByVal Int1 As Long, ByVal Int2 As Long) As Long
SumupTwoIntegers = Int1 + Int2
End Function
英文:
Calling a Procedure
- In VBA, 'those' and 'these' are called Procedures, and they are located in Modules.
- Basically, a Sub does something while a Function returns a result.
- The Call keyword is considered deprecated.
- For whole numbers (integers(math)), you could use something like the following.
<!-- language: lang-vb -->
Option Explicit
Sub MyFirstCallingProcedure()
Dim b As Long: b = 1
Dim c As Long: c = 2
Dim a As Long: a = SumupTwoIntegers(b, c)
MsgBox a
End Sub
Function SumupTwoIntegers(ByVal Int1 As Long, ByVal Int2 As Long) As Long
SumupTwoIntegers = Int1 + Int2
End Function
答案2
得分: 0
当模块名称与同一模块中的子程序名称相同时发生这种情况。
'检查并重命名包含此子程序的模块(如果具有相同名称)
Sub testsub()
调用 xchart(a, b, c)
MsgBox a
End Sub
'检查并重命名包含此子程序的模块(如果具有相同名称)
Sub xchart(a, b, c)
a = b + c
End Sub
英文:
This happens when the module name is the same with the Sub in the same module.
'check and RENAME THE MODULE containing this Sub if have the same name
Sub testsub()
Call xchart(a, b, c)
MsgBox a
End Sub
'check and RENAME THE MODULE containing this Sub if have the same name
Sub xchart(a, b, c)
a = b + c
End Sub
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论