VB6.0文本框格式化输入(千分位和小数点)
先挂个5分吧,我提的问题总是没有答案,等有了好的再加分怎么样让VB文本框变成格式化输入框。主要是自动添加小数点和千分位。例如:键盘输入12345在输入过程中直接转换为:1...
先挂个5分吧,我提的问题总是没有答案,等有了好的再加分
怎么样让VB文本框变成格式化输入框。
主要是自动添加小数点和千分位。
例如:键盘输入12345
在输入过程中直接转换为:123.45
输入:12345678
转换为:123,456.78
注意,我要的效果是在输入过程中直接产生,而不是输入结束后再转换格式。
用VBA做了一个模拟的
建立一个textbox1
代码如下:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
MsgBox (Format(TextBox1.Text, "#,###.00"))
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1.Text) = 2 Then
TextBox1.Text = Format(TextBox1.Text / 10, "#,###.0")
ElseIf Len(TextBox1.Text) > 2 Then
TextBox1.Text = Format(TextBox1.Text * 10, "#,###.0")
End If
End Sub
其中KeyCode = vbKeyReturn是调试用的,以便察看效果。
现在的问题是支持输入不支持删除
如果用Del或者BackSpace删除几个数字就会出错。
-------------------------------------------------------------
1楼的想法我试过了
由于keypress不能获取del和backspace值
将keypress事件放在keydown事件中
并且Len(TextBox1.Text) > 2又增加一个条件keycode<>8
但是依然没有效果
问题是:
本次<BackSpace>删除,对本次格式转换来说是正确的
错误产生在按过<BackSpace>之后的下一次按键事件 展开
怎么样让VB文本框变成格式化输入框。
主要是自动添加小数点和千分位。
例如:键盘输入12345
在输入过程中直接转换为:123.45
输入:12345678
转换为:123,456.78
注意,我要的效果是在输入过程中直接产生,而不是输入结束后再转换格式。
用VBA做了一个模拟的
建立一个textbox1
代码如下:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
MsgBox (Format(TextBox1.Text, "#,###.00"))
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1.Text) = 2 Then
TextBox1.Text = Format(TextBox1.Text / 10, "#,###.0")
ElseIf Len(TextBox1.Text) > 2 Then
TextBox1.Text = Format(TextBox1.Text * 10, "#,###.0")
End If
End Sub
其中KeyCode = vbKeyReturn是调试用的,以便察看效果。
现在的问题是支持输入不支持删除
如果用Del或者BackSpace删除几个数字就会出错。
-------------------------------------------------------------
1楼的想法我试过了
由于keypress不能获取del和backspace值
将keypress事件放在keydown事件中
并且Len(TextBox1.Text) > 2又增加一个条件keycode<>8
但是依然没有效果
问题是:
本次<BackSpace>删除,对本次格式转换来说是正确的
错误产生在按过<BackSpace>之后的下一次按键事件 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询