3

我正在尝试创建一个将调用其他几个子例程之一的子例程。

当我在 if 语句中使用调用时,出现错误:

预期变量或过程,而不是模块。

下面是调用过程:

Call schedule_3_day(shift1, ActiveWorkbook.Sheets("Employees"), ActiveWorkbook.Sheets("3 Day Template"))

这是它所指的功能。

Sub schedule_3_day(ByRef sourcesheet As Worksheet, ByRef employeesheet As Worksheet, ByRef template As Worksheet)

就其本身而言,即当它是一个自包含的子例程时, schedule_3_day 会按预期工作。我正在尝试更改它以将用户定义的变量传递给它。

4

2 回答 2

12

背景

当 Excel 创建模块时,它会命名 then Module1Module2依此类推。如果像我一样将例程分为多个集合:全局、任务 1、任务 2 等,这可能会让人感到困惑。

似乎不是每个人都知道您可以重命名 Excel 模块。这在 Access 中很明显,您需要输入模块的名称。对于 Excel,您必须自己发现这个工具。

选择模块,单击 F4,模块属性将出现在浮动窗口中,就像在窗体中一样。唯一的属性是Name您可以将其更改为符合变量名称规则的任何内容。使用这个工具,我重命名了我的模块:Global、、等等,这样我就可以轻松地识别我今天要处理的模块Task1Task2

局限性

我相信您在选择模块名称时遇到了一个限制。

如果我重命名一个模块Task1,那么该模块中的子、函数或全局变量Task1从外部是不可见的。

如果包含的模块sub schedule_3_day(ByRef ...名为schedule3_day.

于 2013-01-02T09:20:11.730 回答
1

如果模块和宏具有相同的名称,请执行以下操作:

模块.宏

因此,如果我的模块和宏都被称为 FreezeColumnFilter 那么代码将是:

FreezeColumnFilter.FreezeColumnFilter

于 2020-07-16T15:16:11.480 回答