我在一个单独的模块中创建了一个子程序,用于在我正在处理的Excel项目中分配一些全局变量。我正在为变量分配工作表,有9个工作表/变量,但在运行时13只有1个错误,当我检查本地窗口时,我看到分配的类型是“工作表”而不是“变体/对象/工作表#”其余的人都这样做。这是一些代码:
Public Cover, Notes, HWIO, IntChn, FbChn, _
DigFb, AnaFb, RemAlm, OGoL As Worksheets
Public Sub AssignVars()
Set Cover = Sheets("1. Cover")
Set Notes = Sheets("2. Notes")
Set HWIO = Sheets("3. HW Input-Output")
Set IntChn = Sheets("4. Internal Channels")
Set FbChn = Sheets("5. Funct Block Channels")
Set DigFb = Sheets("6. Digital Funct Blocks")
Set AnaFb = Sheets("7. Analog Funct Blocks")
Set OGoL = Sheets("OGOnline")
Set RemAlm = Sheets("8. Remote Alarming")
End Sub
错误发生在Set OGoL = Sheets("OGOnline")
查看Locals我发现除了OGoL之外的所有变量都有一个分配给它们的工作表对象。 OGoL在那里有“工作表”。它可能正在盯着我,但我不知道为什么我的类型不匹配,表单存在为命名。
答案 0 :(得分:5)
发生这种情况是因为您要将工作表分配给工作表变量。
在前七个变量初始化中没有遇到此问题的原因是因为您已将这些变量声明为类型变量。为了将这些变量声明为Worksheet类型,您必须这样指示:
Public Cover As Worksheet, Notes As Worksheet, HWIO As Worksheet, _
IntChn As Worksheet, FbChn As Worksheet, DigFb As Worksheet, _
AnaFb As Worksheet, RemAlm As Worksheet, OGoL As Worksheet