Excel 在类模块中格式化值

Excel 在类模块中格式化值,excel,vba,class,Excel,Vba,Class,我有以下代码 Dim W As New WordC ' being WordC the name of my clase W.Revenue=101545 我想将其格式化为货币,但我希望它在类模块中完成。如何使用属性来实现这一点 我想在类模块中的某个地方使用类似于此的代码 If Revenue > 1000000 Then Revenue = Format(Revenue / 1000000, "Currency") & "M" Else Revenue = Fo

我有以下代码

Dim W As New WordC ' being WordC the name of my clase
W.Revenue=101545
我想将其格式化为货币,但我希望它在类模块中完成。如何使用属性来实现这一点

我想在类模块中的某个地方使用类似于此的代码

If Revenue > 1000000 Then
    Revenue = Format(Revenue / 1000000, "Currency") & "M"
Else
    Revenue = Format(Revenue / 1000, "Currency") & "k"
End If

格式化的收入仅在类模块中需要

您可以使用
属性Let
属性Get
来实现:

If Revenue > 1000000 Then
    Revenue = Format(Revenue / 1000000, "Currency") & "M"
Else
    Revenue = Format(Revenue / 1000, "Currency") & "k"
End If
Clas代码1:这将
收入
保持为一个整数,并且仅当您使用
W.RevenueAsString
获取收入时才对其进行格式化

Dim revenue As Integer

Property Get RevenueAsString() As String
    If revenue > 1000000 Then
        RevenueAsString = Format(revenue / 1000000, "Currency") & "M"
    Else
        RevenueAsString = Format(revenue / 1000, "Currency") & "k"
    End If

    Return
End Property
或者可以将其设置为字符串:

Private RevenueInternal As String

Property Get Revenue() As String

    Revenue = RevenueInternal
    Return
End Property


Property Let Revenue(value As Integer)
    If value > 1000000 Then
        RevenueInternal = Format(value / 1000000, "Currency") & "M"
    Else
        RevenueInternal = Format(value / 1000, "Currency") & "k"
    End If
End Property

我更喜欢第一个选项,因为在
revenue
变量中仍将原始值存储为整数。然后,您可以使用
W.revenue
处理实际值,也可以使用
W.RevenueAsString
处理格式化值。要将其存储为货币还是字符串?如果您想将其存储为货币,那么只需这样做。但在属性中,要获取信息,需要将其转换为字符串。
Dim revenue As Integer

Property Get RevenueAsString() As String
    If revenue > 1000000 Then
        RevenueAsString = Format(revenue / 1000000, "Currency") & "M"
    Else
        RevenueAsString = Format(revenue / 1000, "Currency") & "k"
    End If

    Return
End Property