调用子例程时出错

unc*_*tea 3 excel vba

我正在尝试创建一个子程序,根据用户输入的内容调用其中一个子程序.但是,当我在if语句中使用调用时,我收到一个错误:

预期的变量或程序,而不是模块.

这是呼叫程序:

Call schedule_3_day(shift1, ActiveWorkbook.Sheets("Employees"), ActiveWorkbook.Sheets("3 Day Template"))
Run Code Online (Sandbox Code Playgroud)

这是它所指的功能.

Sub schedule_3_day(ByRef sourcesheet As Worksheet, ByRef employeesheet As Worksheet, ByRef template As Worksheet)
Run Code Online (Sandbox Code Playgroud)

就它本身而言,即当它是一个自包含的子程序时,schedule_3_day就像我想要的那样工作.我试图改变它以将用户定义的变量传递给它.

Ton*_*ore 10

背景

当Excel创建模块时,它会命名Module1,Module2依此类推.如果像我一样将你的例程分成几组:Global,Task1,Task2等等,这可能会让人感到困惑.

并非所有人都知道您可以重命名Excel模块.这在Access中显而易见,要求您提供模块的名称.对于Excel,您必须自己发现这个设施.

选择模块,单击F4,模块属性将显示在浮动窗口中,就像它对表单一样.唯一属性是Name您可以更改为符合变量名称规则的任何属性.使用此工具重新命名我的模块:Global,Task1,Task2等等,这让我很容易地确定我想今天的工作模块.

局限性

我相信你已经遇到了模块名称选择的一个限制.

如果我重命名模块,Task1则该模块中的子,函数或全局变量Task1从外部是不可见的.

如果包含的模块sub schedule_3_day(ByRef ...已命名,则会出现错误消息"预期的变量或过程,而不是模块" schedule3_day.