Solved

VBA Single Data Type - keep results to one decimal place

Posted on 2009-05-05
1
1,401 Views
Last Modified: 2012-06-22
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 String
strPercent2 = Me.txtPercentage.Value
 
Dim sngPercent2 As Single
Dim strSearch As String
 
If IsNumeric(strPercent2) Then
sngPercent2 = 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
 
    Loop
 
 
Else
End If
 
End Sub

Open in new window

0
Comment
Question by:ThePATMAN26
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 59

Accepted Solution

by:
Saurabh Singh Teotia earned 500 total points
ID: 24307423
Replace this line...
sngPercent2 = sngPercent2 - 0.1

with this..
sngPercent2 = round(sngPercent2 - 0.1,1)
This will take care of your problem...
Saurabh...
 
0

Featured Post

Enroll in May's Course of the Month

May’s Course of the Month is now available! Experts Exchange’s Premium Members and Team Accounts have access to a complimentary course each month as part of their membership—an extra way to increase training and boost professional development.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
The viewer will learn how to create a normally distributed random variable in Excel, use a normal distribution to simulate the return on an investment over a period of years, Create a Monte Carlo simulation using a normal random variable, and calcul…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question