2013-04-20 92 views
2

我来自C++世界,我正在通过VBA类的第一步。VBA自动类型转换

说我有一个聪明的日期一类,即QDATE

*** Class Module *** 
Option explicit 
Private xDate_ As Date 

Property Let xDate(xVal As Date) 
     xDate_ = xVal 
End Property 

Property Get xDate() As Date 
    xDate = xDate_ 
End Property 

' ... some nice methods follow here... 


*** non-Class Module *** 
Public Function makeQDate() As QDate 
    Set makeQDate = New QDate 
End Function 

示例用法可能是

Dim xQDate as QDate : xQDate = makeQDate() 
xQDate.xDate = DateSerial(2000,1,1) 

最后一行是不是像你一样一个可以用C++得到。如果我们可以创建隐式转换,允许编写

xQDate = DateSerial(2000,1,1) 

这将是太棒了。就像在VBA中可以实现的那样? 非常感谢。

+1

一个提示 - 你可以使一个方法/属性默认一个,这是我可以建议的唯一想法。在这种情况下,你的代码的最后一行代码将会是相同的...... – 2013-04-20 20:54:18

+1

在编辑器中设置VBA中的默认成员是不可能的,你必须按照这里所述做一些魔术 - http:// www.cpearson.com/excel/DefaultMember.aspx – 2013-04-21 03:00:50

回答

1

据我所知,VBA不支持自定义隐式转换,只有内置转换。但是,你是对的 - 它会很棒。