なお JavaScript 版は こちら です。
Dim x x = 95839285734.3245 Dim y y = MyFormatNumber(x) Call MsgBox(y)
' (すべての変数に格納する値は0オリジンとする)
Function MyFormatNumber(ByVal x) ' 引数の例としては 95839285734.3245
Dim s
s = CStr(x) ' 確実に文字列型に変換する。例では "95839285734.3245"
Dim p
p = InStr(0 + 1, s, ".") - 1 ' 小数点の位置を0オリジンで求める。例では 11
If p < 0 Then ' 小数点が見つからなかった時
p = Len(s) ' 仮想的な小数点の位置とする
End If
Dim r
r = Mid(s, p + 1) ' 小数点の桁と小数点より右側の文字列。例では ".3245"
Dim i
For i = 0 To p - 1 ' (10 ^ i) の位について
Dim c
c = Mid(s, p - 1 - i + 1, 1) ' (10 ^ i) の位のひとつの桁の数字。例では "4", "3", "7", "5", "8", "2", "9", "3", "8", "5", "9" の順になる。
If c < "0" Or c > "9" Then ' 数字以外のもの(符合など)が見つかった
r = Left(s, p - i) & r ' 残りを全部付加する
Exit For
End If
If i > 0 And i Mod 3 = 0 Then ' 3 桁ごと、ただし初回は除く
r = "," & r ' カンマを付加する
End If
r = c & r ' 数字を一桁追加する。
Next
MyFormatNumber = r ' 例では "95,839,285,734.3245"
End Function