如何限制用户仅在Excel userform中具有相同名称模式的所有文本框/文本框中输入数字
我有60个Excel用户表单中的文本框。为了限制用户只为TextBox1到TextBox50输入数字(十进制),我需要编写大量与下面相同的代码 我的问题: 1.我想创建一个类/函数,就像我不需要为TextBox1到TextBox50编写相同的代码一样。有简单的解决办法吗 2.如果我想在userform的所有文本框中限制用户的数字如何限制用户仅在Excel userform中具有相同名称模式的所有文本框/文本框中输入数字,excel,vba,textbox,userform,Excel,Vba,Textbox,Userform,我有60个Excel用户表单中的文本框。为了限制用户只为TextBox1到TextBox50输入数字(十进制),我需要编写大量与下面相同的代码 我的问题: 1.我想创建一个类/函数,就像我不需要为TextBox1到TextBox50编写相同的代码一样。有简单的解决办法吗 2.如果我想在userform的所有文本框中限制用户的数字 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If (KeyAscii
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = 46 Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
End If
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'same code
End Sub
.......
.......
Private Sub TextBox1\u按键(ByVal keyscii作为MSForms.ReturnInteger)
如果(KeyAscii>47和KeyAscii<58)或KeyAscii=46,则
keyscii=keyscii
其他的
KeyAscii=0
如果结束
端接头
专用子文本框2u按键(ByVal KEYSCII作为MSForms.ReturnInteger)
"同样的代码,
端接头
.......
.......
请尝试下一种方法:
有关如何在VBA中使用“控制数组”的问题,请参见前面的问题,这里还有一个很好的参考:请尝试我发布的解决方案。@mohsin:您没有抽出时间来测试上述解决方案吗?如果经过测试,它是否能满足您的需要?
Option Explicit
Public WithEvents txtBEvent As MSForms.TextBox
Private Sub txtBEvent_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = 46 Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
End If
End Sub
Option Explicit
Private txtB() As New TxtBClass
Sub AssignTxtBoxEvent()
Dim ws As Worksheet, k As Long, oObj As OLEObject
Set ws = ActiveSheet 'use here your necessary sheet
ReDim txtB(100) 'maximum text boxes to be processed (can be increased)
For Each oObj In ws.OLEObjects
If TypeName(oObj.Object) = "TextBox" Then
'exclude the textboxes you need to be excluded from this common event:
If (oObj.Name <> "TextBoxX") And (oObj.Name <> "TextBoxX") Then
Set txtB(k).txtBEvent = oObj.Object: k = k + 1
End If
End If
Next
ReDim Preserve txtB(k - 1)
End Sub
Option Explicit
Private Sub Worksheet_Activate()
AssignTxtBoxEvent
End Sub