我正在编程创建一个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