VBA Single Data Type - keep results to one decimal place
I have a loop that takes a number from the user, tests an Excel document for instances of this number, and then subtracts one tenth from the input number, and tests again. The loop operates until the number ends up at zero.
Now the problem that I have is after two or three loops the result of the Input = Input - 0.1 begins resulting in a number with several decimal places when I want to keep it to just one. (i.e. at the the third time the loop operates starting at 1 it results in 0.6999999 instead of just 0.7.
I need it to remain at the one decimal place so I get an even number each time, in sequence (i.e. 1, 0.9, 0.8, 0.7 and so on until Zero.) I'm using Single data type. Is there a better data type to use?
Private Sub btnProcess_Click()Dim strPercent2 As StringstrPercent2 = Me.txtPercentage.ValueDim sngPercent2 As SingleDim strSearch As StringIf IsNumeric(strPercent2) ThensngPercent2 = CSng(strPercent2) Do While sngPercent2 > 0.1 strSearch = CStr(sngPercent2) Dim i As Long i = 1 Do Until i > Cells(65536, "a").End(xlUp).Row If InStr(Trim(Cells(i, "a").Value), strSearch) > 0 Then Rows(i - 1 & ":" & i + 3).delete Else i = i + 1 End If Loop MsgBox CStr(sngPercent2) Application.ScreenUpdating = True sngPercent2 = sngPercent2 - 0.1 LoopElseEnd IfEnd Sub
sngPercent2 = sngPercent2 - 0.1
with this..
sngPercent2 = round(sngPercent2 - 0.1,1)
This will take care of your problem...
Saurabh...