UDF / VBA 问题

UDF / VBA 问题

我一直试图使用这行代码来显示货币,但它也会在前面显示 $[。有什么办法可以阻止这种情况发生吗?

    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 属性),从中删除所有数字、空格、小数点和千位分隔符、“减号” (如果需要,还要删除“加号”) - 经过这样的清理后,字符串中剩下的就是货币的符号。

相关内容