gpt4 book ai didi

vba - 打开新工作簿 Excel 2016 VBA 后功能区无响应

转载 作者:行者123 更新时间:2023-12-02 21:17:41 25 4
gpt4 key购买 nike

在编程方面,我还是个菜鸟,但是我已经能够在 Excel 中构建一些有用的应用程序,这些应用程序可以自动执行我的一些日常任务。

目前,我在 Excel 2016 中尝试使用 workbooks.open() 打开新工作簿时遇到了一个恼人的问题。

我制作了一个带有调用用户窗体的按钮的工作簿。表单启动后,用户可以选择下载并打开多种类型的 .xls 文件。当用户单击表单的“确定”按钮时,将调用所有相应的函数,打开选定的工作簿,并卸载并隐藏表单。

但是,最后打开的工作簿(顺便说一句,当前处于事件状态的工作簿)的功能区没有响应,解决此问题的唯一方法是在打开的窗口之间按 ALT+TAB。

似乎“焦点”仍然位于带有按钮的初始工作簿上,因为如果我在卸载表单后调用 Msgbox ,它就会出现在此处。值得一提的是,尽管初始工作簿不是事件的,但还是会发生这种情况!

经过一些实验后,我能够通过在调用函数时禁用 Application.ScreenUpdating 并在卸载表单之前重新启用它来解决该问题。

但这仅在同时打开多个工作簿时才有效。如果用户选择仅打开一本工作簿,则问题仍然存在。我遇到了一个使用户窗体成为无模式的建议,这确实解决了问题,但会产生其他类型的不良行为。

复制问题的代码的简化版本如下:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False 'solves the issue but only for multiple files - comment out to replicate the problem
If OptionButton1 Then
Workbooks.Open ("http://www.admie.gr/fileadmin/user_upload/reports/DayAheadSchedulingUnitAvailabilities/20180602_DayAheadSchedulingUnitAvailabilities_01.xls")
Else
Workbooks.Open ("http://www.admie.gr/fileadmin/user_upload/reports/DayAheadSchedulingUnitAvailabilities/20180603_DayAheadSchedulingUnitAvailabilities_01.xls")
Workbooks.Open ("http://www.admie.gr/fileadmin/user_upload/reports/DayAheadSchedulingUnitAvailabilities/20180604_DayAheadSchedulingUnitAvailabilities_01.xls")
End If
Application.ScreenUpdating = True 'solves the issue but only for multiple files - comment out to replicate the problem
Unload UserForm1
UserForm1.Hide
MsgBox ActiveWorkbook.Name 'for debugging purposes - comment out to replicate the problem - the msgbox will be displayed on the workbook which called the userform, although it's not the active one
End Sub

Sub Button1_Click() 'calls the userform
UserForm1.OptionButton1.Value = True
Load UserForm1
UserForm1.Show vbModeless 'comment out to replicate the problem - solves the issue but creates unwanted behavior
End Sub

有人处理过这个问题吗?

你有什么建议?

最佳答案

当我只打开 1 个工作簿时,我在股票 Excel 上遇到了同样的问题。在 Workbooks.open 之后添加此功能区将再次启用:

    ThisWorkbook.Activate
Workbooks("*openedWorkbookName*").Activate

顺便说一句,在当前未激活的工作表中选择单元格时,一些较旧的代码会导致运行时错误。这也有助于解决这个问题。

关于vba - 打开新工作簿 Excel 2016 VBA 后功能区无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50837952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com