用vb文本框如何实现以固定格式显示文字?
例如:我在文本框中输入1,自动显示为GP-CD-E-070001同理,输入2,显示为GP-CD-E-070002补充下,需要在不输入任何值的情况下不显示任何东西,输入数字...
例如:我在文本框中输入1,自动显示为 GP-CD-E-070001
同理,输入2,显示为 GP-CD-E-070002
补充下,需要在不输入任何值的情况下不显示任何东西,输入数字后才显示GP-CD-E-070001。
另外,用的是Excel的控制工具箱里的文本框,文本框名称是[编号]
谢谢各位大虾。。。
再再补充一点点。。。我需要输入1至3位数字。。各位大虾提供的现在只能输个位数。。。 展开
同理,输入2,显示为 GP-CD-E-070002
补充下,需要在不输入任何值的情况下不显示任何东西,输入数字后才显示GP-CD-E-070001。
另外,用的是Excel的控制工具箱里的文本框,文本框名称是[编号]
谢谢各位大虾。。。
再再补充一点点。。。我需要输入1至3位数字。。各位大虾提供的现在只能输个位数。。。 展开
3个回答
展开全部
1L的办法不错
但是如果要在同个文本框里实现功能的话~
可以把代码放在LostFocus事件中
Private Sub Text1_LostFocus()
Text1.Text = "GP-CD-E-07" & Format(Text1.Text, "0000")
End Sub
当你在输入的时候,显示内容和你输入的完全一样
但是当焦点转移到其他位置时"GP-CD-E-07"会自动加上
另外加上条判断语句
If Right(Text1.Text, 10) <> "GP-CD-E-07" Then
这样如果第二次获得焦点,文本框的值已经有"GP-CD-E-07"存在,
不会被再次加上该字符串~
Private Sub Text1_LostFocus()
If Right(Text1.Text, 10) <> "GP-CD-E-07" Then
Text1.Text = "GP-CD-E-07" & Format(Text1.Text, "0000")
End If
End Sub
三位可以的~你试下
Format(Text1.Text, "0000")保证你4位也可以
但是如果要在同个文本框里实现功能的话~
可以把代码放在LostFocus事件中
Private Sub Text1_LostFocus()
Text1.Text = "GP-CD-E-07" & Format(Text1.Text, "0000")
End Sub
当你在输入的时候,显示内容和你输入的完全一样
但是当焦点转移到其他位置时"GP-CD-E-07"会自动加上
另外加上条判断语句
If Right(Text1.Text, 10) <> "GP-CD-E-07" Then
这样如果第二次获得焦点,文本框的值已经有"GP-CD-E-07"存在,
不会被再次加上该字符串~
Private Sub Text1_LostFocus()
If Right(Text1.Text, 10) <> "GP-CD-E-07" Then
Text1.Text = "GP-CD-E-07" & Format(Text1.Text, "0000")
End If
End Sub
三位可以的~你试下
Format(Text1.Text, "0000")保证你4位也可以
展开全部
Const AddInStr As String = "GP-CD-E-07" '设置一个固定字符串
Dim appEdit As Boolean '标识,代表Change是否由程序修改文本框内容触发
Private Sub UserForm_Initialize()
appEdit = True
编号.Text = ""
End Sub
Private Sub 编号_Change()
Dim StrLen As Integer
StrLen = Len(AddInStr) '获取增加字符串的长度
If appEdit Then appEdit = False: Exit Sub '如果由程序修改引发 那么不去做后面事情
If Len(编号.Text) < StrLen Then '用户输入内容
appEdit = True
编号.Text = AddInStr & Right(Format(编号.Text, "0000"), 4)
编号.SelStart = Len(编号.Text)
ElseIf Left(编号.Text, StrLen) = AddInStr Then '是特定内容
appEdit = True
If Right(编号.Text, StrLen) = Right(AddInStr, StrLen - 3) & "000" Then
编号.Text = ""
Exit Sub
Else
编号.Text = AddInStr & Right(Format(Mid(编号.Text, StrLen + 1), "0000"), 4)
编号.SelStart = Len(编号.Text)
End If
End If
End Sub
Private Sub 编号_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Dim appEdit As Boolean '标识,代表Change是否由程序修改文本框内容触发
Private Sub UserForm_Initialize()
appEdit = True
编号.Text = ""
End Sub
Private Sub 编号_Change()
Dim StrLen As Integer
StrLen = Len(AddInStr) '获取增加字符串的长度
If appEdit Then appEdit = False: Exit Sub '如果由程序修改引发 那么不去做后面事情
If Len(编号.Text) < StrLen Then '用户输入内容
appEdit = True
编号.Text = AddInStr & Right(Format(编号.Text, "0000"), 4)
编号.SelStart = Len(编号.Text)
ElseIf Left(编号.Text, StrLen) = AddInStr Then '是特定内容
appEdit = True
If Right(编号.Text, StrLen) = Right(AddInStr, StrLen - 3) & "000" Then
编号.Text = ""
Exit Sub
Else
编号.Text = AddInStr & Right(Format(Mid(编号.Text, StrLen + 1), "0000"), 4)
编号.SelStart = Len(编号.Text)
End If
End If
End Sub
Private Sub 编号_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1.Text = "GP-CD-E-07" & Format(Chr(KeyAscii), "0000")
Text1.SelStart = Len(Text1.Text)
KeyAscii = 0
End Sub
excel中文本框的名称是[编号]?从没见过可以这样命名的,excel中是:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox1.Text = "GP-CD-E-07" & Format(Chr(KeyAscii), "0000")
TextBox1.SelStart = Len(TextBox1.Text)
KeyAscii = 0
End Sub
Text1.Text = "GP-CD-E-07" & Format(Chr(KeyAscii), "0000")
Text1.SelStart = Len(Text1.Text)
KeyAscii = 0
End Sub
excel中文本框的名称是[编号]?从没见过可以这样命名的,excel中是:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox1.Text = "GP-CD-E-07" & Format(Chr(KeyAscii), "0000")
TextBox1.SelStart = Len(TextBox1.Text)
KeyAscii = 0
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询