要在C中切换单精度和双精度,我们使用类似的东西:
#ifdef USE_DOUBLE
typedef double data_t;
#else
typedef float data_t;
#endif
是否有一种简单的方法可以执行相同的操作,以便我可以在VBA中轻松切换两者?
答案 0 :(得分:1)
在VBS中,用户定义的类型被抽象为类。例如,
Public Const PRECISION = 1
Class data_t
Private dValue
Private Sub Class_Initialize
dValue = 0
End Sub
Public Property Get Value 'inside out
Value = dValue
End Property
Public Property Let Value(val) 'outside in
If PRECISION = 1 Then
dValue = CSng(val)
Else
dValue = CDbl(val)
End If
End Property
End Class
Set obj = New data_t
obj.Value = 0.00000011920928955078125
Msgbox obj.Value
如果PRECISION = 1,则输出为1.192093E-07
否则输出将为1.19209289550781E-07
您可以通过添加类模块轻松修改VBA中的上述代码。
答案 1 :(得分:0)
这在VBA中几乎相同:
#Const USE_DOUBLE = False
#If USE_DOUBLE Then
Public data As Integer
#Else
Public data As Double
#End If
#
代表条件编译。