それが機能している方法はかなり非論理的であるように見えるので、これは本当に私を悩ませています。
通貨記号を取得するためのコードを少し使用して、セルを通貨としてフォーマットするマクロがあります。
関連するコードは次のとおりです。
Dim sym As String
sym = reportConstants(ISOcode)
'Just use the ISO code if there isn't a symbol available
If sym = "" Then
sym = ISOcode
End If
With range(.Offset(0, 3), .Offset(3, 3))
.NumberFormat = sym & "#,##0;(" & sym & "#,##0)"
Debug.Print sym & "#,##0;(" & sym & "#,##0)"
End With
reportConstants
文字列として定義された通貨記号を持つ辞書オブジェクトです。例reportConstants("USD") = "$"
:これは、マクロの前半で定義されています。
マクロが実行されると、ISOコードを取得し、対応する通貨記号でセルをフォーマットする必要があります。
あるインスタンスで実行すると、ISOコードは「USD」(つまり、sym
として定義され"$"
ます)ですが、それでもセルはポンド記号(£)でフォーマットされます。debug.print
セル文字列をフォーマットすると、そのように表示さ$#,##0;($#,##0)
れます。構文が正しい限り、セルにドル記号を使用する必要があります。ただし、代わりに£記号を使用します。(私は英国版のExcelを実行しているので、デフォルトで£記号になっている可能性がありますが、なぜですか?)
どんな助けでも大歓迎です。