我喜欢将Object转换为字符串。我找到了这个topic,但我无法在Excel 2010中使用它(" Cast.xxx"," CArray()"和#34; Array() " Excel似乎不知道?)
我知道如何转换变体,例如" toString = CStr(x)"但不是如何做到对象的最佳方式
Function toString(ByVal x As Variant) As String
If TypeOf x Is Object Then
toString = ???
Else
toString = CStr(x)
End If
End Function
有什么建议吗?
答案 0 :(得分:0)
您指的是IFormattable界面吗?例如在VB.NET中?
Excel VBA不是一种为您提供ToString方法的语言,因为它不支持继承。
在您的示例中,您只是将变量的任何内容转换为字符串,但VBA中的对象不会直接支持它。
如果您有外部COM对象,则需要在接口中公开此对象以访问此方法以从VBA调用它。
对于您自己的类,您可以为对象实现自己的IFormattable接口,但是在能够调用对象ToString方法之前,您可以使用辅助方法来分配该接口。当然,您可以通过类接口为每个类提供ToString方法,但如果您想为所有对象包含此功能,那么接口可能就是您的选择。
希望有所帮助。