2013-04-20 96 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不支持自定義隱式轉換,只有內置轉換。但是,你是對的 - 它會很棒。