如何调整选项卡条中的用户表单选项卡,由文本框输入触发?

时间:2014-05-10 23:48:01

标签: vba ms-word word-vba userform

我缺少一些基本概念,我不知道它们是什么。当我使用我的用户表单更新标签条时,我得到一个编译错误“无效使用属性”。我正在尝试触发Tab条带的更新,该条带响应输入到文本框中的有效整数。以下是我目前的代码。

我也不知道如何检查Tab索引中的计数,然后添加到计数帮助,这也将不胜感激。

我得到的另一个错误是当IsValid函数检查数字值时,它会在输入字符时询问调试。我是否错误地检查了输入?

下图显示了表单图层。其中Test1是一个Frame(在Userform页面上),TabStrip位于与文本框相同的框架内(在代码中引用为TStrip1)。

Function IsValid(numIn As Integer) As Boolean

   IsValid = (numIn Like [1-15])

End Function

Private Sub TextBox11_Change()

    Dim ValidNum As Integer

    ValidNum = TextBox11
    Call IsValid(ValidNum)
    Dim x As Integer

    x = TextBox11
    Call TStrip1(x)

End Sub

Private Function TStrip1_(ByRef,ByVal TStrip1) As Integer

    Dim x As Integer
    Dim TabNum As Integer

    TabNum = x

    UserForm1.TStrip1.TabIndex.Add = TabNum

End Function

Private Sub TStrip1_Change()

End Sub

Single Form Tab

1 个答案:

答案 0 :(得分:3)

'无效使用属性'错误是由以下原因引起的:

Private Function TStrip1_(ByRef,ByVal TStrip1) As Integer

您为参数指定了ByRef AND ByVal。将该行更改为:

Private Function TStrip1_(TStrip1) As Integer

应该删除该错误。

但是,我会像这样重写你的代码:

Option Explicit 'always use option explicit (just do)


Private Function IsValid(numIn As Variant) As Boolean
Dim n As Long

n = Val(numIn) 'cast to long

'check if n is between 1 and 15:
If n > 0 And n < 16 Then
    IsValid = True
Else
    IsValid = False
End If

End Function

Private Sub TextBox1_Change()
Dim ValidNum As Long

If IsValid(Me.TextBox1.Value) Then
    ValidNum = Val(Me.TextBox1.Value)
Else
    Exit Sub
End If
Call AdjTabs(ValidNum)

End Sub
Private Sub AdjTabs(n As Long)
Dim i As Long

If Me.TabStrip1.Tabs.Count = n Then
    Exit Sub
ElseIf Me.TabStrip1.Tabs.Count < n Then
    For i = Me.TabStrip1.Tabs.Count To n - 1
        Me.TabStrip1.Tabs.Add
    Next i
Else
    For i = Me.TabStrip1.Tabs.Count To n + 1 Step -1
        Me.TabStrip1.Tabs.Remove (Me.TabStrip1.Tabs.Count - 1)
    Next i
End If

End Sub

唯一剩下的就是更改选项卡名称,但现在由您决定。我相信你能搞清楚。