VBA(またはVB 6)には継承はありませんので、残念ながらスーパーのようなものはありません。
ただし、非常に緩いタイピングの利点があります。変数をVariant
として宣言することができます。これは、コントロールを含むあらゆるタイプの値を保持できる汎用データ型です。一般的には、はVariant
タイプを使用してを避けてください。可能な場合は、この場合はほとんど選択肢がありません。
ですから、このようなあなたの機能を宣言することができます:Variant
データ型は、本当に価値のあらゆるタイプを保持し、タイプが実行されるまで知られていないことができることを思い出して、もちろん
Public Function MyIndexOf(list As Variant, str As String) As Integer
' Do work here...
End Function
指定された型がInteger
またはString
でないこと、またはComboBox
またはListBox
コントロールと同じパブリックメンバーを公開していないコントロールであることを確認することができます(このように、 1つは)。
TypeName
機能を使用して、実行時にVariant
の実際のタイプを判別することができます。だから、単純に渡されるComboBox
またはListBox
制御以外のものに対して保護するガード条項を含めるように上記の機能を変更できます。
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
あなたは '型名(リスト)'を意味しないのですか? – systemovich
@Geoffrey:もちろんです。良いキャッチ。私はあなたがその変数の名前を教えてくれると思います。修正されました。 –
ありがとうございます – PKeno