我正在运行桌面宏,它在不同时间运行excel宏。我使用出现在某些点的无模式Userforms来提示Desktop宏开始某些过程。
当输入数据时,会出现有问题的代码。 UserForm1显示,提示桌面宏使用文本导入向导从记事本复制到Excel中(给我时,记事本中的数据为.csv)。
如果输入的数据对于一张纸而言太长,则单独的步骤会创建其他纸张。输入宏测试其他工作表。如果它们存在,它们将生成其他Userforms以提示将数据输入到其他工作表中。
它有一段时间的功能。我更改了代码并声明了一些私有常量用于模块范围的使用,但是现在当UserForm显示时剪贴板仍然是灰色的。我很难过。
数据已过时,宏在给定的纸张上循环输入数据(每次一天)。
私人常数:
const array = [...multiplier()];
代码:
Private Const DayNumber As Integer 'Day # being cycled through
Private Const MonthDayMaximum As Integer 'Maximum # of days in month
答案 0 :(得分:4)
我猜测灰色表示应用程序错误。并且不难发现。
始终使用Option Explicit
。这与Debug
- >一起使用Compile
将有助于揭露编码缺陷。
我看到的第一个问题是你使用Const
。他们不是。
Private Const DayNumber As Integer 'Day # being cycled through
Private Const MonthDayMaximum As Integer 'Maximum # of days in month
如果你真的希望它们保持不变,应该像下面那样声明:
Private Const DayNumber As Integer = <something> 'Day # being cycled through
Private Const MonthDayMaximum As Integer = <something> 'Maximum # of days in month
它会立即告诉您Const
是错误的元素(在所有日期和月份之后不是常数)。
然后,在您的主代码中,您尝试将某些内容分配给Const
这是一个很大的禁忌。
DayNumber = 1 ' Bad!
MonthDayMaximum = InputBox("Input Days in Month","Input Prompt",0) + 1 ` Bad!
如果您希望它们是模块范围的,那么将它们声明在模块的顶部,如:
Private DayNumber As Integer 'Day # being cycled through
Private MonthDayMaximum As Integer 'Maximum # of days in month
请注意,它们不是Const
。这应该有用,但这也会尖叫&#34;代码发臭&#34;并打破了良好和OOP-ish编程的基础。