找小数点的位置就可以了 Private Sub Command1_Click() MsgBox InStr(1, Text1, ".") - 1 End Sub
如果只是你说的这种情况(那几个数字),直接用left就行了。
Private Sub Command1_Click() Dim a(4) As Single, i As Integer a(0) = 1.233 a(1) = 10.1 a(2) = 120.3 a(3) = 2310.88 a(4) = 52698.987
For i = 0 To 4 Select Case Len(CStr(Int(a(i)))) Case 1 Debug.Print "个位数"; a(i) Case 2 Debug.Print "十位数"; a(i) Case 3 Debug.Print "百位数"; a(i) Case 4 Debug.Print "千位数"; a(i) Case 5 Debug.Print "万位数"; a(i) End Select NextEnd Sub
Private Sub Command1_Click()
MsgBox InStr(1, Text1, ".") - 1
End Sub
Private Sub Command1_Click()
Dim a(4) As Single, i As Integer
a(0) = 1.233
a(1) = 10.1
a(2) = 120.3
a(3) = 2310.88
a(4) = 52698.987
For i = 0 To 4
Select Case Len(CStr(Int(a(i))))
Case 1
Debug.Print "个位数"; a(i)
Case 2
Debug.Print "十位数"; a(i)
Case 3
Debug.Print "百位数"; a(i)
Case 4
Debug.Print "千位数"; a(i)
Case 5
Debug.Print "万位数"; a(i)
End Select
NextEnd Sub
看来发帖表述不清。目标是根据位数确定round(xx,x)
个位数round(x,3)
十位数取Round(x,2)
百位数取round(x,1)
千位数以上round(x,0)
谢谢,各位的回复。
谢谢楼上的程序。
满足目标需求的程序
Private Sub Command1_Click()
Dim a(5) As Single, i As Integer
a(0) = 1.233
a(1) = 10.1
a(2) = 120.3
a(3) = 2310.88
a(4) = 52698.987
a(5) = 1035.666145
''
For i = 0 To 4
Select Case Len(CStr(Int(a(i))))
Case 1
Debug.Print "个位数"; Round(a(i), 3)
Case 2
Debug.Print "十位数"; Round(a(i), 2)
Case 3
Debug.Print "百位数"; Round(a(i), 1)
Case Is > 4
Debug.Print "大于千位数"; Round(a(i), 0)
'Case 5
' Debug.Print "万位数"; a(i)
End Select
NextEnd Sub结果
个位数 1.233
十位数 10.1
百位数 120.3
大于千位数 2311
大于千位数 52699
大于千位数 1036
谢谢各位的回复。
Dim i As Integer
i = InStr(1, Text1, ".") - 1
If i >= 4 Then
i = 0
Else
i = 4 - i
End If
Text2 = Round(Text1, i)
End Sub
End SubPrivate Function fun_Round(ByVal sngSource As Single) As Single
Dim i As Integer
i = InStr(1, sngSource, ".") - 1
If i >= 4 Then
i = 0
Else
i = 4 - i
End If
fun_Round = Round(sngSource, i)
End Function