sub终止但未显示所需的工作簿

时间:2013-10-23 23:39:35

标签: excel-vba vba excel

我有一个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

2 个答案:

答案 0 :(得分:0)

尝试更改

  

窗( “Macro_Fname”)。激活

  

工作簿( “Macro_Fname”)。激活

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

答案 1 :(得分:0)

要引用宏工作簿,请使用ThisWorkbook

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

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

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

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

避免使用Select / Acitvate。见here

Range("D4").Select

修复上述问题后,您的代码将按预期运行。