2013-12-17 113 views
2

我在Excel 2013中遇到了一個問題。在我的項目中,我有一個用戶窗體,其中包含列出所有打開的Excel圖書名稱的列表框。Excel 2013中的用戶窗體在切換活動工作簿後消失

當用戶點擊列表中的某個特定名稱時,相應的書被激活。因此,用戶窗體總是處於頂層,當用戶單擊列表中的名稱時,他可以看到所有打開的工作簿在活動用戶窗體後面逐一激活。

這是它曾經在Excel 2010中

工作現在,升級後二〇一〇年至2013年的方式,如果在列表中的名稱的用戶點擊,選擇工作簿被激活,但用戶窗體消失。

Excel 2013中究竟發生了什麼,以及繞過此問題的方法是什麼?

回答

1

是的,默認行爲已經改變。在Pre Excel 2013中,如果在同一實例中打開不同的工作簿,則會在一個主Excel窗口中顯示。但在Excel 2013中,它們顯示在他們自己的窗口中。並且因爲這個,modeless用戶窗體只能在加載用戶窗體時處於活動狀態的工作簿之上顯示。

我不認爲這有一個修復呢。它是由設計而成,可能不是固定的。

1

@Siddharth,根據你所說的,我想我有一個解決方案。當您打開表格時,它只會顯示在ActiveWorkbook之上。只要所有代碼都在相同的代碼線程中(不確定術語是否正確),就會陷入相同的工作簿中;但是,如果你使用Application.RunApplication.Ontime命令,它似乎開始它自己的代碼線程,它是獨立的足以工作。只需要Activate工作簿/工作表,然後Unload窗體並遠程調用顯示窗體的宏。

不幸的是,你需要使用Unload,而不是Hide,由於上述問題的;這意味着您需要保存所選的所有選項。

Private Sub lstFiles_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
    ThisWorkbook.Application.Workbooks(lstFiles.Text).Activate 
    Unload Me 
    Application.Run "USER_Macro1" 
    'Application.OnTime Now(), "USER_Macro1" 
End Sub 

Private Sub USER_Macro1(Optional Control) ' As IRibbonControl) 
    ModelessForm.Show vbModeless 
End Sub 

我在Excel 2013進行了測試,到目前爲止,它甚至似乎不管其他地方看到的Screenupdating = false問題的工作。

+0

Application.Run爲我做了詭計! (我有一個.xlam加載項,它顯示了WOrkbook_Open上的表單)。 –

相關問題