我的用户表单上有多个自旋按钮,我想在每个按钮上放置相同的代码,
Me.TextBox1.Value = Me.TextBox1.Value - 1
If Me.TextBox1.Value = 0 Then
Me.TextBox1.Value = 12
End If
If Me.TextBox1.Value < 10 Then
Me.TextBox1.Value = "0" & Me.TextBox1.Value
End If
但是有一种简化的方法,而不是在多个旋转按钮上放置多个块,只是将它们组合在一个块中?
答案 0 :(得分:2)
将大部分代码放入自己的Sub过程中,并将对象从每个按钮的'handler'子句传递给它。
Private Sub button1_Click()
allSpin Me.TextBox1
End Sub
Private Sub button2_Click()
allSpin Me.TextBox2
End Sub
Private Sub button3_Click()
allSpin Me.TextBox3
End Sub
Sub allSpin(ByRef tb As Object)
With tb
.Value = .Value - 1
If .Value = 0 Then
.Value = 12
ElseIf .Value < 10 Then
.Value = "0" & .Value
End If
End With
End Sub
这是非常普遍的,我怀疑它是否可以直接使用,但我希望它足以让你了解它的工作原理。
最后一个子可能会更好,
Sub allSpin(ByRef tb As Object)
With tb
If Int(.Value) = 1 Then
.Value = 12
Else
.Value = Format(Int(.Value) - 1, "00")
End If
End With
End Sub
答案 1 :(得分:1)
您的代码将Textbox.value称为整数。 我认为你可能想要做的是在点击时让旋转按钮从0到12换行,当点击时可能在12时停止。假设SpinButton是SpinButton1,SpinButton2,SpinButton3,并且有相同数字的相关文本框: 试试这个
Private Sub SpinButton1_Change()
SpinUpdate
End Sub
Private Sub SpinButton2_Change()
SpinUpdate
End Sub
Private Sub SpinButton3_Change()
SpinUpdate
End Sub
Private Sub SpinUpdate()
Dim StrI As String
StrI = Right(ActiveControl.Name, 1)
With Me.Controls("SpinButton" & StrI)
If .Value = 0 Then
.Value = 12
End If
Me.Controls("TextBox" & StrI).Text = Format(.Value, "00")
End With
End Sub
Private Sub UserForm_Click()
Dim i As Integer
For i = 1 To 3
With Me.Controls("SpinButton" & Format(i))
.Min = 0
.Max = 12
End With
Next i
End Sub