A client needed the numbers to show up in certain data files in the “x100” format to accommodate interchanging data with a legacy system. That is, if the number is “23.56,” it shows up as “2356,” and “23” becomes “2300.” Because I didn’t want to create a special case throughout my code to manage this, and the VB Format function doesn’t support such a format, I subclassed the Format function and added the new format myself:
Public Function Format(Expression As Variant, Optional _ sFormat As Variant, Optional FirstDayOfWeek As _ Variant, Optional FirstWeekOfYear As Variant) As String If IsMissing(sFormat) Then Format = VBA.Format(Expression) ElseIf sFormat = "x100" Then ' handle the special x100 case Expression = Expression * 100 Format = VBA.Format(Expression, "0.") Format = Left$(Format, InStr(1, Format, ".") - 1) Else ' wasn't my special format, so pass through to the ' real format function If IsMissing(FirstWeekOfYear) And _ IsMissing(FirstDayOfWeek) Then Format = VBA.Format(Expression:=Expression, _ Format:=sFormat) ElseIf IsMissing(FirstDayOfWeek) Then Format = VBA.Format(Expression:=Expression, _ FirstWeekOfYear:=FirstWeekOfYear) ElseIf IsMissing(FirstWeekOfYear) Then Format = VBA.Format(Expression:=Expression, _ FirstDayOfWeek:=FirstDayOfWeek) End If End IfEnd Function
This allows me to simply call the Format function as I normally would everywhere in my code, have my “x100” format, and still support all the normal Format parameters and options. Note the use of VBA.Format in the routine to reference the built-in format function.