1

我有一个 VBA 程序,要求用户输入所需的范围,该范围位于另一个打开的工作簿中。如果出现错误,即手动激活另一个工作簿,但没有选择范围,或者出现错误,我希望程序显示带有错误消息的原始宏工作簿工作表。下面的代码在调试模式下工作,但是当 VBA 程序运行时,它会正确显示错误但不显示原始宏工作表。它保留在用户手动激活的工作表上。我错过了什么?

在下面的代码中,“HMArea”是获取用户输入的例程返回的 Range 变量。“Macro_Fname”是原始 VBA 程序文件名的字符串变量。

HM_file = FileName(HMArea)   
If HM_file = "Macro_Fname" Then
    Windows("Macro_Fname").Activate
    Sheets("[name of the sheet in Macro_Fname]").Select
    Range("D4").Select
    MsgBox "ERROR: No data selected"
    Exit Sub
End If
4

2 回答 2

0

参考宏工作簿使用ThisWorkbook

打开另一个工作簿时,请始终将其分配给变量,以便您可以控制它。

Set wbk = Workbooks.Open("D:\test.xlsx")

使用多个工作簿时,始终为工作簿对象添加前缀。如果它被忽略,它将采取活动工作簿。

`Sheets("[name of the sheet in Macro_Fname]").Select`

避免使用 Select/Acitvate。看这里

Range("D4").Select

一旦上述问题得到解决,您的代码将按预期运行。

于 2013-10-24T02:47:02.403 回答
0

尝试改变

Windows("Macro_Fname").激活

工作簿(“Macro_Fname”)。激活

但是,您的问题的确切性质是模糊的。假设您在 Workbook A 中,是否要在 Workbook B 中选择一个范围(同时打开)?

于 2013-10-24T01:08:47.340 回答