使用此代码,我尝试使用我的代码从主“选项卡”中删除选项卡,但我不知何故缺少正确的方法
`Private Sub DeleteAlltabs(frm As Object)
Dim tabCtrl As TabControl
Set tabCtrl = frm.Controls("Tab")
If Not tabCtrl Is Nothing Then
For i = tabCtrl.Pages.count - 1 To 0 Step -1
tabCtrl.Pages(i).Remove
Next i
End If
End Sub`
我什至尝试了一段时间,代码略有不同,但看起来如此简单的东西不起作用:
If Not tabCtrl Is Nothing Then
While tabCtrl.Pages.count > 0
tabCtrl.Pages.Remove tabCtrl.Pages(tabCtrl.Pages.count - 1)
Wend
End If
我的组件是:
我尝试了这两个代码,并希望它删除选项卡,但是这两个代码都给了我一个语法错误。
正如 Bilel 所解释的,
tabCtrl.Pages(i)
指的是选项卡控件的 Page
集合中的一个 Pages
,并且 Page
对象没有 Remove
方法。
所以你必须使用
Pages.Remove
来代替。如果您想根据索引定位特定页面,您可以这样做:
tabCtrl.Pages.Remove i
或者如果省略索引,最后一页将被删除:
tabCtrl.Pages.Remove
我认为第二个版本简化了任务。这是我测试的代码:
Public Sub DeleteAlltabs(frm As Form)
Dim tabCtrl As TabControl
Dim i As Long
Set tabCtrl = frm.Controls("TabCtl0") ' I changed the name of the tab control
For i = 1 To tabCtrl.Pages.Count
tabCtrl.Pages.Remove
Next i
End Sub
另一个问题是 “仅当表单位于设计视图中时,才可以从选项卡控件的 Pages 集合中删除 Page 对象。”(请参阅 Pages.Remove 方法)
因此,我在调用修改后的子例程之前在设计视图中打开了表单:
Public Sub calling_code()
Const cstrForm As String = "Form13"
DoCmd.OpenForm cstrForm, acDesign
DeleteAlltabs Forms(cstrForm)
DoCmd.Close acForm, cstrForm, acSaveYes
End Sub