2017-01-22 5 views
0

Windowsの地域のコントロールパネルでは、桁区切り文字が最初の3桁を左にグループ化するインドの番号システムを使用するかどうかを示す「桁区切り」設定です小数点以下3桁ごとにグループ化されているより一般的なグループ化に対して、2桁ごとに、Windowsの「数字のグループ化」の設定方法

どのようにVB6でその設定を取得できますか?

また、インドのナンバリングシステムをいつ使用するかを決める最も良い方法は何ですか?

+2

'GetLocaleInfoEx()' 'LOCALE_SGROUPING'は機能しませんと、これを試していません。 –

+1

'FormatNumber()'関数を使うときは、 'GroupDigits'引数に' vbUseDefault'を渡すことができます(または省略することもできます)。次に、現在のロケール設定に従ってフォーマットする必要があります。 – Bob77

答えて

4
Private Const LOCALE_SGROUPING = &H10 
Private Const LOCALE_USER_DEFAULT = &H400 
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) as Long 

Private Function Grouping() As String 
    Dim retVal As Long, sBuf As String 
    sBuf = String(255, vbNullChar) 
    retVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SGROUPING, sBuf, Len(sBuf)) 
    Grouping = Left$(sBuf, retVal - 1) 
End Function 

例:意志出力:Bob77はコメントで言ったように123.456,789ため3;03;2;0 12.34.56,789

0

については、なぜちょうどFormatNumberはあなたのためにそれをやらせますか?地域設定の桁区切りが適用されます。この

MsgBox(FormatNumber(123456, , , , vbUseDefault)) 

"エア・コード" のように - VB6については考えしかし - 私は自分自身

+0

ありがとうございますが、これは、ほとんどのプログラムが処理できる精度の15桁以上の数値を計算し、数値のように書式設定されたテキストとして返す任意の精度プログラム用です。結果の例: "1,234,567,891.2345678912"たいていのプログラムで数字を使用しようとすると、1,234,567,891.23456(15桁の精度)に切り捨てられます。したがって、FormatNumberは動作しません.VB6が数値データ型として認識するものは動作しないためです。プログラムはテキスト文字列で数学を行います。 –

関連する問題