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

当我在 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 按预期工作。我试图改变它以将用户定义的变量传递给它。

最佳答案

背景

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

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

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

限制

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

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

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

关于excel - 调用子程序时出错 "Expected Variable or Procedure, not Module.",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14114969/

10-17 01:47