Excel VBA - 如何将对象转换为字符串

时间:2016-02-02 07:48:10

标签: excel vba excel-vba casting typeconverter

我喜欢将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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您指的是IFormattable界面吗?例如在VB.NET中?

Excel VBA不是一种为您提供ToString方法的语言,因为它不支持继承。

在您的示例中,您只是将变量的任何内容转换为字符串,但VBA中的对象不会直接支持它。

如果您有外部COM对象,则需要在接口中公开此对象以访问此方法以从VBA调用它。

对于您自己的类,您可以为对象实现自己的IFormattable接口,但是在能够调用对象ToString方法之前,您可以使用辅助方法来分配该接口。当然,您可以通过类接口为每个类提供ToString方法,但如果您想为所有对象包含此功能,那么接口可能就是您的选择。

希望有所帮助。