Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2016 VBA工作簿激活,但随后停用_Excel_Combobox_Userform_Vba - Fatal编程技术网

Excel 2016 VBA工作簿激活,但随后停用

Excel 2016 VBA工作簿激活,但随后停用,excel,combobox,userform,vba,Excel,Combobox,Userform,Vba,我有一个奇怪的情况,我还没有找到解决办法 我正在处理需要打开的多个工作簿(比如3个工作簿)上的大量数据。我需要一个用户表单,以便能够与所有3个工作簿进行交互 我已经制作了一个组合框,当初始化userform时,它会将工作簿的名称添加到组合框中: '* initialize the userform *' Private Sub UserForm_Initialize() Dim wb As Workbook '* get the name of all the workbook

我有一个奇怪的情况,我还没有找到解决办法

我正在处理需要打开的多个工作簿(比如3个工作簿)上的大量数据。我需要一个用户表单,以便能够与所有3个工作簿进行交互

我已经制作了一个组合框,当初始化userform时,它会将工作簿的名称添加到组合框中:

'* initialize the userform *'
Private Sub UserForm_Initialize()
    Dim wb As Workbook

    '* get the name of all the workbooks and add to the combobox '*
    For Each wb In Application.Workbooks
        Me.PrimaryBook_ComboBox.AddItem wb.name
    Next wb

    Me.PrimaryBook_ComboBox = ActiveWorkbook.name
End Sub
更改后,它将激活该工作簿:

Private Sub PrimaryBook_ComboBox_Change()
    Application.ScreenUpdating = True
    Dim wb As Workbook
    If Me.PrimaryBook_ComboBox <> "" Then
        Set wb = Workbooks(Me.PrimaryBook_ComboBox.Text)
        wb.Activate
    End If

    Application.ScreenUpdating = False
End Sub
Private Sub PrimaryBook\u组合框\u Change()
Application.ScreenUpdating=True
将wb设置为工作簿
如果Me.PrimaryBook\u组合框“”那么
Set wb=工作簿(Me.PrimaryBook\u ComboBox.Text)
wb.激活
如果结束
Application.ScreenUpdating=False
端接头
(此用户表单中有两个引用编辑)

当我在组合框中选择另一个工作簿时,它会将该工作簿放在最前面。但当我点击其中一个参照编辑框时,它会立即返回到最初打开的工作簿

还有一部分我不明白,当我在Excel 2010中加载它时,它是完美的。我可以选择所需的工作簿并单击参照编辑,该工作簿将保持激活状态

有什么我遗漏的吗?有什么我没有想到的提示和/或技巧吗


谢谢

[删除,发布的解决方案没有解决问题]

应用程序屏幕更新是否应该设置为False然后设置为True?你有另一种方式,我在调用表单的宏中将其关闭,当表单卸载时,我将其重新打开。但我需要在激活工作簿时打开它,以便它显示在前面。然后我立即将其关闭(如图所示)@RADO update:似乎无论哪个工作簿处于活动状态(在前面打开),都是用户表单绑定的工作簿。如果我前面有Book3并运行userform,当我将book更改为book2时,它将激活它,但一旦我在userform上单击其他地方,它就会直接返回Book3。