我正在編程創建一個Excel工作簿,在該工作簿中,需要在第一次打開工作簿時使用VBA創建一些滾動條。創建ActiveX控件並在同一個子集中設置值
我還需要同時設置滾動條的值。
下面是一些示例代碼:
Private Sub Workbook_Open()
Call Add_Scroll
Call Set_Scroll
End Sub
Sub Add_Scroll()
Sheets("Sheet1").OLEObjects.Add(ClassType:="Forms.ScrollBar.1", Link:=False, _
DisplayAsIcon:=False, Left:=159.75, Top:=77.25, Width:=290.25, Height _
:=36.75).Name = "Scroll_1"
End Sub
Sub Set_Scroll()
Sheets("Sheet1").Scroll_1.Value = 32767
End Sub
Sub Add_Set_Scroll()
Sheets("Sheet1").OLEObjects.Add(ClassType:="Forms.ScrollBar.1", Link:=False, _
DisplayAsIcon:=False, Left:=159.75, Top:=77.25, Width:=290.25, Height _
:=36.75).Name = "Scroll_1"
Sheets("Sheet1").Scroll_1.Value = 32767
End Sub
現在,如果我跑Add_Scroll
然後Set_Scroll
手動,我得到一個滾動條創建,然後將其值設置。
但在打開的工作簿或運行Add_Set_Scroll
我得到:
除非我註釋掉調用Set_Scroll
這幾乎就像代碼運行太快基本過程並試圖在正確創建之前設置滾動條的值。
我試着在調用Set_Scroll
之前在任意延遲中添加一個函數並對返回進行評估(即確保它等待),但都無濟於事。
搜索已經取得了什麼幫助,我會很感激,如果任何人都可以在有何啓示這個
什麼時候調用Add_Set_Scroll()?當你運行這個Sub時,錯誤發生在哪一行?對'Sheets(「Sheet1」)。Scroll_1.Value = 32767'的引用對我來說似乎是錯誤的,但是當你手動執行'Set_Scroll()'時,它會工作... – FreeMan 2015-03-31 14:14:02
@FreeMan,'Add_Set_Scroll'沒有得到稱爲,除非我手動運行它。這只是示例代碼,用於演示如果在創建控件後立即發生控件設置錯誤,無論是在同一個Sub中還是在從另一個Sub中連續調用的單個子中,都會給出錯誤。該錯誤發生在Scroll值設置的行上。 – SiHa 2015-03-31 14:27:06
@FreeMan。謝謝,你的評論讓我看着正確的方向。 – SiHa 2015-03-31 15:21:42