2013-05-07 122 views
0

這VBA代碼是,做在同一個Excel 2010工作簿兩個工作表的側方比較的應用程序。該代碼實現它的目的,但有一些奇怪的副作用: - 沒有激活和SELECT語句中,ScrollWorkbookTabs功能的執行沒有錯誤,但實際上並沒有打開窗口中的下一個工作簿選項卡(1) - 當我包括激活和Select語句,ScrollWorkbookTabs函數將正確執行並打開窗口(1)中的下一個選項卡,但窗口(1)中的光標在從單元格移動到單元格時不會被正確擦除並重新繪製。我需要ScrollWorkbookTabs函數的工作和光標重繪正確。有沒有ScrollWorkbookTabs不能像廣告一樣工作的情況?是否有可能影響光標被窗口重新繪製的方式?Excel VBA中的窗口對象ScrollworkbookTabs功能問題

'xlt.Activate 
    'xlt.Range("K558").Select 
    xlb.Windows(1).Caption = xlt.Name 
    xlb.Windows(1).ScrollWorkbookTabs Sheets:=1 
    xlb.Windows(1).ScrollIntoView 1, 1, 10, 10 
    If xlb.Windows.Count < 2 Then 
     xlb.Windows(1).NewWindow ' New window is automatically the active one 
     xlb.Windows(1).Caption = xls.Name 
     xlb.Windows(1).ScrollIntoView 1, 1, 10, 10 
    End If 
    xlb.Windows.CompareSideBySideWith (xlt.Name) 
    xlb.Windows.SyncScrollingSideBySide = True 

回答

0

這個問題似乎是Excel認爲光標實際上不可見時纔可見。在這種狀態下,切換光標會導致它在該窗口中始終處於錯誤狀態,即Excel認爲它不可見時會顯示,並且在可見時不可見。按此順序激活表格似乎已解決了問題。

xlt.Activate 
xls.Activate 
xlb.Windows(1).Caption = xlt.Name 
xlb.Windows(1).ScrollIntoView 1, 1, 10, 10 
If xlb.Windows.Count < 2 Then 
    xlb.Windows(1).NewWindow ' New window is automatically the active one 
    xlb.Windows(1).Caption = xls.Name 
    xlb.Windows(1).ScrollIntoView 1, 1, 10, 10 
End If 
xlb.Windows.CompareSideBySideWith (xlt.Name) 
xlb.Windows.SyncScrollingSideBySide = True