想要使用旋轉按鈕(ActiveX控件)顯示上一張或下一張工作表。點擊按鈕後,事件被成功觸發,所需表單被激活,但它包含原始表單中的一些元素(命令,圖形等),並將其顯示爲附加圖片。通過旋轉按鈕啓動不同的工作表
爲向下按鈕事件樣品的編號:
Private Sub SpinButton_JumpToWeek_SpinDown()
Dim sh_num As String
Dim tmp_num As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
SpinButton_JumpToWeek.Value = Range("B27").Value - 1
tmp_num = SpinButton_JumpToWeek.Value
' Activate desired KTx sheet
sh_num = "KT" & tmp_num
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
要覆蓋此效果我必須手動選擇(激活)的另一片材,然後再次選擇所需的片材。我也嘗試使用宏自動化此解決方法,但不幸的是它不起作用。
有趣的是,如果我在調試模式下執行代碼(使用斷點和逐行逐行),則不會發生此問題。
令人驚訝的是,如果我試圖通過向定義的單元格中寫入值(工作表名稱索引)(即使用Worksheet_Change事件)來顯示上一頁/下一頁,那麼我就沒有這樣的問題。所需的頁面正確顯示。看照片。此evententer圖像的描述在這裏
示例代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh_num As String
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("F27").Value > 0 Then
' Activate desired KTx sheet
sh_num = "KT" & Range("F27").Value
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
我需要使用旋轉按鈕,因爲它是速度更快,讓我跳過一些表(例如,如果這些不有數據)。 32位和64位Excel都會出現此問題。
做某人一個想法爲什麼發生這個問題和解決方法?我是否必須更改Excel中的某些設置或系統屬性?任何幫助將不勝感激。
@mehow 由於大量的單詞,我在此追加我的意見。
- 我按照你的建議,並試圖插入主動控制「Microsoft Office電子表格」的UserForm的例子。我發現這對我的情況來說不是一個好的解決方案,因爲當用戶將值插入到單元格中時,此類表單的響應速度相對較慢(即使在像我這樣的快速PC上)。此外,這會使我相當簡單的* .xlsm工作簿複雜化,它有50多張(每週1張,這些表的內容隨後連接到主表),並且完全符合我的基本需求(與當然這個旋鈕除外)。
在我看來,可能有必要操縱某種系統屬性(例如Application.ScreenUpdating技巧),但我沒有足夠的VBA知識來找到它。
- 爲了清楚地解釋我的問題,我需要分享我的示例工作簿,但我不知道如何將其上傳到此論壇。不幸的是,我不能在這個論壇上成功上傳/顯示圖片(由於我的評分低),這也會有很大的幫助。
順便說一句,我也看不到在這個論壇的其他問題上的圖像。 。由於在瀏覽器中缺少插件,是否會發生此問題?
你有沒有考慮使用用戶窗體和顯示部分牀單上呢?爲了得到一個想法請參閱[this](http://stackoverflow.com/questions/17406319/display-a-part-of-an-excel-sheet-on-a-userform-using-vba/17407415#17407415) – 2013-08-27 13:34:46
「不幸的是,它不起作用」是什麼意思?它失敗了什麼? – enderland
@mehow我寫了一個模擬我的「手動」解決方法的VBA代碼,但其響應不幸無效 – mcerna2