我想在textbox内输入数字后自动变成金额形式,比如输入1000,textbox自动显示成1,000.00,我用的是
Private Sub Text1_Change()
Text1.Text = Format(Text1.Text, "##,##0.00")
End Sub
但是这个时候在输入数字的话,textbox的光标跑到1前面了,本来我想输入的是10,002.00,可是显示的却是:21,000.00,怎么能让光标一直保持在原来输入的地方呢?
Private Sub Text1_Change()
Text1.Text = Format(Text1.Text, "##,##0.00")
End Sub
但是这个时候在输入数字的话,textbox的光标跑到1前面了,本来我想输入的是10,002.00,可是显示的却是:21,000.00,怎么能让光标一直保持在原来输入的地方呢?
我也写了个,在各个位置都可以,但是光标前面是“,”的时候,按退格键会没有效果,应该在keypress里面判断,如果是退格键,并且光标前面是“,”,就把文本里面光标前面的一位数字去掉,这个留给LZ去做吧,嘿嘿
Private Sub Text1_Change()
Dim val As Double, sval As String
If Left(Text1.Text, 1) <> "," Then sval = CDbl(Text1.Text) Else sval = CDbl(Right(Text1.Text, Len(Text1.Text) - 1))
txt = Text1.Text
selstar = Len(txt) - Text1.SelStart
If InStr(txt, ".") Then
If InStr(txt, ",") Then
txt = Format(sval, "#,###.00")
Else
txt = Format(sval, "#,###.00")
End If
Else
txt = Format(sval, "#,###.00")
selstar = 3
End IfText1.Text = txt
If Len(txt) - selstar > 0 Then Text1.SelStart = Len(txt) - selstar Else Text1.SelStart = 0End Sub
MaskEdBox1.Mask = ("##,##0.00")
End Sub正解