你好我有当前问题,我在Module1中有一个名为Dateiname的变量,它是一个Excel文件的名称。这个变量取值为" 04_01_2017.xlsm"。它可能因用户输入
而异 Dateiname = Ord & mNummerGanz & "_" & Name & ".xlsm"
ThisWorkbook.SaveAs Filename:=Dateiname
我希望能够从另一个Excel文件激活此Excel文件。在激活具有变量名称的Excel文件之前,此Excel文件在Module2之前执行一些操作。
当我输入时;
Windows(Dateiname).Activate
我收到的错误如:运行时错误9. aynyone可以帮助我吗?
答案 0 :(得分:1)
在所有模块中使用Option Explicit
。
Module1中的变量不在Module2的范围/可用范围内。 Option Explicit将提醒您此错误,因为Dateiname
很可能在Module2的范围内未定义,并且具有空/ nullstring值。
如果Dateiname
为空/ nullstring,这将总是使下标超出范围(类型9)错误,因为它等同于Windows("").Activate
,并且因为没有这样的命名窗口/工作簿,会出现错误。
如果Dateiname
是模块范围的变量,您可以执行以下操作:
Windows(Module1.Dateiname).Activate
或者最好:
Workbooks(Module1.Dateiname).Activate
正如其他人所说,你应该使用Workbook
变量。
如果Dateiname
是程序范围
您需要将变量显式传递给Module2中的过程。如,
模块1:
Sub foo()
Dim Dateiname as String
Dateiname = "some value"
Call Module2.bar(Dateiname)
End Sub
单词数:
Sub bar(Dateiname as String)
MsgBox Dateiname
End Sub