Function iformat(inputnumber As Double, desiredspaces As Integer) As String
' Output iformat is a string representing integer, left-padded with spaces to specified length
' Input - desiredspaces - how many spaces total we want the output number (including minus sign)
' Input - inputnumber floating point/double number - will be converted to integer
' program generates an error if desiredspaces is not large enough
Dim length As Integer ' tells how many characters will be needed to display the input number
Const notEnoughRoom = 999 ' the error number if desiredspaces is not enough
Dim extraSpacesNeeded As Integer ' how many extra spaces do we need
Dim extraspaces As String ' holds the extra spaced needed for left-padding to desired length
Dim iCounter As Integer ' loop counter
If inputnumber = 0 Then
length = 1
ElseIf inputnumber > 0 Then
length = Fix(Application.Log10(inputnumber)) + 1
Else
length = Fix(Application.Log10(Abs(inputnumber))) + 2
' added 1 for the minus sign
End If
If length > desiredspaces Then Error (notEnoughRoom)
extraSpacesNeeded = desiredspaces - length
extraspaces = ""
For iCounter = 1 To extraSpacesNeeded
extraspaces = extraspaces & " "
Next iCounter
iformat = extraspaces & Format(inputnumber, "0")
End Function