【发布时间】:2018-11-30 15:15:52
【问题描述】:
我必须使用 VBA 在 MS Word 中设置 ActiveX 控件选项卡顺序。所以这里是基本代码:
Private Sub radioFull_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = 9 Then
radioIntern.Activate
End If
End Sub
问题是我对由密码设置的文档设置了有效的限制编辑保护。因此,在开始保护后,在任何控件上按下选项卡时,它拒绝运行,说我对文档有保护。
因此,在执行上述功能期间,我首先必须取消保护文档,将选项卡移动到下一个字段,然后通过以下功能重新保护:
Private Sub ToggleProtect()
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:="password"
Else
ActiveDocument.Protect Password:="password", NoReset:=True, _
Type:=wdAllowOnlyFormFields, _
UseIRM:=False, EnforceStyleLock:=False
End If
End Sub
Private Sub radioFull_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = 9 Then
ToggleProtect
radioIntern.Activate
ToggleProtect
End If
End Sub
效果很好。所以我打算通过这样的方式进一步缩短主代码:
Private Sub radioFull_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
tabOrder(KeyCode, controlName)
End Sub
在这种情况下,tabOrder 函数如下所示:
Public Sub tabOrder(K as integer,t as string)
If KeyCode = K Then
ToggleProtect
t.Activate
ToggleProtect
End If
End Sub
但我对 VBA 函数参数并不熟悉。那么请告诉我如何正确传递参数或编写函数,以便我可以在 MS Word 表单中保持 Tab 键顺序?
【问题讨论】:
-
您在参数方面向哪个函数寻求帮助?此外,在您的
tabOrder子中,您不能“激活”t,因为它是String而不是控件。