用户可以通过用户表单插入数值(例如1,000,000
)和ISO代码(比如USD
)。当他将验证时,该值将打印在范围A1中,并将通过使用以下宏记录代码行格式化为货币:
.Range("A1").NumberFormat = _
"_-[$" & Me.ISOTextBox.Value & "] * #,##0.00_-;-[$" & Me.ISOTextBox.Value & "] * #,##0.00_-;_-[$" & Me.ISOTextBox & "] * ""-""??_-;_-@_-"
基本上,上面是分配.NumberFormat
属性的字符串;例如,在“USD”的情况下,字符串将如下所示:
"_-[$USD] * #,##0.00_-;-[$USD] * #,##0.00_-;_-[$USD] * ""-""??_-;_-@_-"
我的问题是:如果使用上面的字符串我设置数字格式,我怎么能获得呢? 我可以清楚地进行字符串解析,这是我正在采用的用于提取3字母ISO代码的“可怕”解决方案:
ISOcode = Left(Replace(Split(Range("A1").NumberFormat, "[")(1), "$", ""), 3)
注意:以上代码将所有NumberFormat
拆分为[
,因此采用第二个元素(以$USD
开头),替换{{ 1}} $
并取前三个字母,符合ISO代码的标准,总是长3个字母。)
文档在这方面很差:有没有人知道是否有一种方法可以正确地从货币格式中获取 ISO代码(而不会变成不优雅的字符串解析)?
答案 0 :(得分:0)
我非常确定您需要解析字符串,但可以使用以下方式更清晰地提取ISO代码:
If InStr(Range("A1").NumberFormat, "[$") <> 0 Then _
ISOcode = Mid(Range("A1").NumberFormat, InStr(Range("A1").NumberFormat, "[$") + 2, 3)