中有VBA沒有繼承(或VB 6),所以很遺憾沒有這樣的東西作爲一個超類。
你這樣做,不過,有非常弱類型的好處。您可以聲明該變量爲Variant
,這是一種通用數據類型,可以保存任何類型的值,包括控件。一般來說,如果可能的話,您應該儘量避免使用使用Variant
類型,但在這種情況下,您沒有多少選擇。
所以,你可以聲明你的函數是這樣的:
Public Function MyIndexOf(list As Variant, str As String) As Integer
' Do work here...
End Function
當然,記住一個Variant
數據類型能夠真正持有任何類型的值,並且該類型不知道,直到運行 - 時間,一個好的防守程序員會檢查,以確保指定的類型不是Integer
或String
甚至控制不公開相同的公共成員作爲ComboBox
或ListBox
控制(從而打破了你寫的代碼期待一個這樣做)。
您可以使用TypeName
函數在運行時確定Variant
的實際類型。
Public Function MyIndexOf(list As Variant, str As String) As Integer
If (Not TypeName(list) = "ComboBox") And (Not TypeName(list) = "ListBox") Then
MsgBox "Wrong type of list variable was specified."
Else
' Do work here...
End If
End Function
你不是說'類型名(名單)`:所以,你可以簡單地修改上面的功能,包括保護條款,以防止超過
ComboBox
或ListBox
控制的任何其他的傳遞? – systemovich 2011-01-14 11:06:33