我一直试图使用这行代码来显示货币,但它也会在前面显示 $[。有什么办法可以阻止这种情况发生吗?
Dim s As String
s = Replace(r.NumberFormat, Chr(34), "")
txet = ""
If Len(s) < 3 Then Exit Function
s = Left(s, 3)
txet = s
End Function```
答案1
也许是这样?
Function txet(r As Range) As String
Const NOT_CURRENCY_CHAR As String = "0123456789 .,-"
Dim s As String
Dim i As Integer
s = r.Text
For i = 1 To Len(NOT_CURRENCY_CHAR)
s = Replace(s, Mid(NOT_CURRENCY_CHAR, i, 1), "")
Next i
txet = s
End Function
从你的 UDF 目的描述中可以清楚地看出(发行货币)您有包含不同金额的单元格,格式化为货币(表示货币符号) - 例如“79,46 ₴”,“€ 10,09”,“35,23 $”,“33,57 CHF”,“96,70 ₼”,“¥ 48,84”。
从代码来看,您尝试将货币符号与单元格的 .NumberFormat 属性隔离开来。提出了另一种解决问题的方法:采用屏幕上显示的单元格文本(这是.Text 属性),从中删除所有数字、空格、小数点和千位分隔符、“减号” (如果需要,还要删除“加号”) - 经过这样的清理后,字符串中剩下的就是货币的符号。