VB6Parse / Library / String / formatpercent

VB6 Library Reference

FormatPercent Function

Returns an expression formatted as a percentage (multiplied by 100) with a trailing % character.

Syntax

FormatPercent(expression[, numdigitsafterdecimal[, includeleadingdigit[, useparensfornegativenumbers[, groupdigits]]]])

Parameters

Settings

The includeleadingdigit, useparensfornegativenumbers, and groupdigits arguments have the following settings:

Constant Value Description
vbTrue -1 True
vbFalse 0 False
vbUseDefault -2 Use the setting from the computer's regional settings

Return Value

Returns a Variant of subtype String containing the expression formatted as a percentage with a trailing % character.

Remarks

Typical Uses

Basic Usage Examples

' Default formatting (2 decimal places from regional settings)
result = FormatPercent(0.75)           ' Returns: "75.00%"
result = FormatPercent(0.5)            ' Returns: "50.00%"
result = FormatPercent(1.25)           ' Returns: "125.00%"

' Handling negative percentages
result = FormatPercent(-0.15)          ' Returns: "-15.00%"
result = FormatPercent(-0.05, 2, , vbTrue)  ' Returns: "(5.00)%"

' Controlling decimal places
result = FormatPercent(0.3333, 0)      ' Returns: "33%"
result = FormatPercent(0.3333, 2)      ' Returns: "33.33%"
result = FormatPercent(0.3333, 4)      ' Returns: "33.3300%"

' Leading digit control
result = FormatPercent(0.005, 2, vbTrue)   ' Returns: "0.50%"
result = FormatPercent(0.005, 2, vbFalse)  ' Returns: ".50%"

Common Patterns

1. Success Rate Display

Dim successful As Long
Dim total As Long
Dim rate As Double

successful = 85
total = 100
rate = successful / total

MsgBox "Success Rate: " & FormatPercent(rate, 1)  ' "Success Rate: 85.0%"

2. Financial Ratios

Dim profit As Currency
Dim revenue As Currency
Dim margin As Double

profit = 25000
revenue = 100000
margin = profit / revenue

lblMargin.Caption = "Profit Margin: " & FormatPercent(margin, 2)  ' "Profit Margin: 25.00%"

3. Survey Results

Dim yesVotes As Long
Dim totalVotes As Long

yesVotes = 347
totalVotes = 500

txtResult.Text = FormatPercent(yesVotes / totalVotes, 1)  ' "69.4%"

4. Progress Indicator

Dim completed As Long
Dim total As Long
Dim progress As Double

completed = 45
total = 100
progress = completed / total

lblProgress.Caption = "Progress: " & FormatPercent(progress, 0)  ' "Progress: 45%"

5. Growth Rate Calculation

Dim currentValue As Double
Dim previousValue As Double
Dim growth As Double

currentValue = 125000
previousValue = 100000
growth = (currentValue - previousValue) / previousValue

MsgBox "Growth: " & FormatPercent(growth, 1)  ' "Growth: 25.0%"

6. Grade Percentage

Dim score As Long
Dim maxScore As Long
Dim percentage As Double

score = 87
maxScore = 100
percentage = score / maxScore

lblGrade.Caption = "Score: " & FormatPercent(percentage, 0)  ' "Score: 87%"

7. Comparison Display

Dim actual As Double
Dim target As Double
Dim achievement As Double

actual = 95000
target = 100000
achievement = actual / target

lblStatus.Caption = "Target Achievement: " & FormatPercent(achievement, 1)  ' "Target Achievement: 95.0%"

8. ListBox Population with Percentages

Dim i As Integer
Dim values() As Double
Dim total As Double

values = Array(15.5, 28.3, 42.1, 14.1)
total = 100

For i = 0 To UBound(values)
lstResults.AddItem FormatPercent(values(i) / total, 1)
Next i

9. Database Field Display

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

rs.Open "SELECT CompletionRate FROM Projects", conn

While Not rs.EOF
Debug.Print FormatPercent(rs("CompletionRate"), 0)
rs.MoveNext
Wend

10. Multiple Percentages in Report

Dim passed As Long, failed As Long, total As Long
Dim report As String

passed = 85
failed = 15
total = passed + failed

report = "Passed: " & FormatPercent(passed / total, 1) & vbCrLf & _
"Failed: " & FormatPercent(failed / total, 1)
' "Passed: 85.0%
'  Failed: 15.0%"

Advanced Usage

1. Flexible Percentage Formatter

Function DisplayPercentage(value As Double, Optional precision As Integer = 1) As String
If value < 0.01 Then
DisplayPercentage = FormatPercent(value, 3)  ' More precision for small values
ElseIf value > 1 Then
DisplayPercentage = FormatPercent(value, 0)  ' No decimals for large percentages
Else
DisplayPercentage = FormatPercent(value, precision)
End If
End Function

2. Comparison with Color Coding

Function FormatVariance(actual As Double, target As Double) As String
Dim variance As Double
variance = (actual - target) / target

FormatVariance = FormatPercent(variance, 1)

If variance > 0 Then
lblVariance.ForeColor = vbGreen  ' Positive variance
ElseIf variance < 0 Then
lblVariance.ForeColor = vbRed    ' Negative variance
End If
End Function

3. Dynamic Precision Based on Value

Function SmartFormatPercent(value As Double) As String
Dim absValue As Double
absValue = Abs(value)

Select Case absValue
Case Is < 0.0001
SmartFormatPercent = FormatPercent(value, 4)
Case Is < 0.01
SmartFormatPercent = FormatPercent(value, 3)
Case Is < 1
SmartFormatPercent = FormatPercent(value, 2)
Case Else
SmartFormatPercent = FormatPercent(value, 1)
End Select
End Function

4. Table Alignment with Percentages

Function AlignedPercentage(value As Double, width As Integer) As String
Dim formatted As String
formatted = FormatPercent(value, 2)
AlignedPercentage = Space(width - Len(formatted)) & formatted
End Function

' Usage in grid or report
For i = 1 To 10
Debug.Print AlignedPercentage(data(i), 12)
Next i

5. Statistical Analysis Display

Type StatisticsResult
Mean As Double
StdDev As Double
Confidence As Double
End Type

Function FormatStatistics(stats As StatisticsResult) As String
FormatStatistics = "Mean: " & FormatPercent(stats.Mean, 2) & vbCrLf & _
"Std Dev: " & FormatPercent(stats.StdDev, 2) & vbCrLf & _
"Confidence: " & FormatPercent(stats.Confidence, 1)
End Function

6. Conditional Formatting for Thresholds

Sub DisplayMetricWithThreshold(metric As Double, threshold As Double, lbl As Label)
lbl.Caption = FormatPercent(metric, 1)

If metric >= threshold Then
lbl.BackColor = vbGreen
lbl.ForeColor = vbWhite
ElseIf metric >= threshold * 0.8 Then
lbl.BackColor = vbYellow
lbl.ForeColor = vbBlack
Else
lbl.BackColor = vbRed
lbl.ForeColor = vbWhite
End If
End Sub

Error Handling

Function SafeFormatPercent(value As Variant) As String
On Error GoTo ErrorHandler

If IsNull(value) Then
SafeFormatPercent = "N/A"
Exit Function
End If

If Not IsNumeric(value) Then
SafeFormatPercent = "Invalid"
Exit Function
End If

SafeFormatPercent = FormatPercent(CDbl(value), 2)
Exit Function

ErrorHandler:
SafeFormatPercent = "Error"
End Function

Common errors: - Error 13 (Type mismatch): Occurs when expression cannot be converted to a numeric value. - Error 6 (Overflow): Can occur with extremely large or small values. - Error 5 (Invalid procedure call): May occur with invalid argument values.

Performance Considerations

Best Practices

  1. Use appropriate decimal places for your context (financial: 2, statistics: 1, progress: 0)
  2. Consider the audience when choosing precision
  3. Handle division by zero before calling FormatPercent
  4. Use consistent formatting throughout your application
  5. Remember that the input is a decimal (0.5 = 50%)
  6. Consider using parentheses for negative values in financial contexts

Comparison with Other Functions

Limitations

Regional Settings Impact

The appearance of formatted percentages varies by locale:

Related Functions

← Back to String | View all functions