Have you ever created a control on a form to enter percentage values and had your users complain because they enter whole numbers which get automatically multiplied by 100. So if the user enters 3, it will actually give 300%.
No worries anymore! I created a very simple procedure which will automatically readjust values entered by your users. 3 will automatically be updated to 0.03, which give 3%.
'---------------------------------------------------------------------------------------
' Procedure : ajustPercentage
' Author : CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Automatically adjust whole number to percentage values
' Copyright : The following may be altered and reused as you wish so long as the
' copyright notice is left unchanged (including Author, Website and
' Copyright). It may not be sold/resold or reposted on other sites (links
' back to this site are allowed).
'
' Revision History:
' Rev Date(yyyy/mm/dd) Description
' **************************************************************************************
' 1 2010-Sep-21 Initial Release
'---------------------------------------------------------------------------------------
Function ajustPercentage(sValue As Variant) As Double
On Error GoTo Error_Handler
If IsNumeric(sValue) = True Then 'Only treat numeric values
If Right(sValue, 1) = "%" Then
sValue = Left(sValue, Len(sValue) - 1)
ajustPercentage = CDbl(sValue)
End If
If sValue > 1 Then
sValue = sValue / 100
ajustPercentage = sValue
Else
ajustPercentage = sValue
End If
Else 'Data passed is not of numeric type
ajustPercentage = 0
End If
Error_Handler_Exit:
On Error Resume Next
Exit Function
Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: ajustPercentage" & vbCrLf & _
"Error Description: " & Err.Description, vbCritical, _
"An Error has Occurred!"
Resume Error_Handler_Exit
End Function
The one thing to note regarding this procedure is that it is meant for controls/fields that you always expect a percentage value between 0% and 100%. If you expect percentage above 100% this procedure will not help you in that case and you will need to build a custom procedure for that situation.