我有一个代码将在Multipage中创建TextBoxes:
Private Sub CommandButton1_Click()
RowChar = 70
MultiPage1.Pages.Clear
For i = 0 To TextBox1.Value - 1
MultiPage1.Pages.Add
MultiPage1.Pages(i).Caption = "Variable" & i + 1
Call LabelPerPage
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.TextBox.1", "NameBox")
With txtbx
.Top = 20
.Left = 100
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.TextBox.1", "MinBox")
With txtbx
.Top = 50
.Left = 100
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.TextBox.1", "LsbBox")
With txtbx
.Top = 20
.Left = 300
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.TextBox.1", "MaxBox")
With txtbx
.Top = 50
.Left = 300
End With
If i = 0 Then
FormulaString = "= C15"
Else
FormulaString = FormulaString & " " & Chr(RowChar) & "15"
RowChar = RowChar + 3
End If
Next i
TextBox2.Value = FormulaString
End Sub
Private Sub LabelPerPage()
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.Label.1")
With txtbx
.Top = 20
.Left = 50
.Caption = "NAME:"
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.Label.1")
With txtbx
.Top = 50
.Left = 50
.Caption = "MIN:"
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.Label.1")
With txtbx
.Top = 20
.Left = 250
.Caption = "LSB:"
End With
Set txtbx = UserForm1.MultiPage1.Pages(i).Controls.Add("Forms.Label.1")
With txtbx
.Top = 50
.Left = 250
.Caption = "MAX:"
End With
End Sub
我试图创建一个代码,它将在其中创建一个页面和文本框,我的问题是我不能在TextBox上做KeyPress,因为它只会因为我的代码而自动创建 .
Goal:
1.)我的目标是做KeyPress,TextBox无法输入数字值或字母 .
2.)我想将textbox1最小的2个文本框与textbox2进行比较
**我希望有人可以帮助我,因为我尽力解决它 . 我尝试这样做代码:
Option 1:
Private Sub MaxBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii > 46 And KeyAscii < 58) Or KeyAscii = 43 Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
MsgBox "Invalid key pressed, you can enter numbers only"
End If
End Sub
Option 2:
Private Sub OnlyNumbers()
If TypeName(Me.ActiveControl) = "MaxBox" Then
With Me.ActiveControl
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, only numbers allowed"
.Value = vbNullString
End If
End With
End If
End Sub
但它不会起作用 . 如果有人可以帮助,请提前感谢你:)
1 回答
为什么不完全失去
keyPress
,因为你唯一想要实现的只是数字输入?您可以在userform代码中执行以下操作:如果您需要多个,您还可以创建一个捕获事件的自定义类,并将该类的
collection
添加到Userform . 为此,您可以查看答案on this questionEdit: 对于后半部分(针对Minbox进行验证),您可以使用相同的事件:只需添加另一个
if
语句以确保数值为> CInt(minbox.text)
(或其他数字类型) .Edit 2: 如果字符串的长度为0(即有人按下退格键/删除键以触发更改事件),您可能希望为
Left(maxbox.Text, Len(maxbox.Text) - 1)
位添加错误处理 .