|
▼りった さん:
こんにちは
>しかしながら、
>誤:o.F_action (o.eAct.eInit)
>誤:o.F_action (Class1.eAct.eInit)
>正:o.F_action (Class1.eAct.eInit)
>のようですので、eInitの部分をプログラム全体でユニークにつける必要があり
>いまいちすっきりしなさそうです。VBAの限界ですかね。
Public Enum eAct
の宣言ですね。別のClassでも使いたいと、でも使えない。。。
これは仕様ですからね。限界といえば限界なんですかね?
>何も返さない場合はどのように書くのでしょうか?
このあたりは人によって違うでしょうが、私の場合を書くと
「何も返さない場合もある。」
というなら必ず何かを返すようにしてます。処理の成功をbooleanで返すとか。
Public Function F_action(ByVal arg As eAct) As Variant
「何も返さない」
のなら、Funcitonではなく、sub として記述します。
Public sub F_action(ByVal arg As eAct)
私はこんな感じで使う事が多いです。
'//////////////Classモジュール。Class1////////
Public Enum eAct
eInit
eStart
eStop
ePause
eRestart
End Enum
Public Function F_action(ByVal arg As eAct) As Variant
'処理
MsgBox "引数は:" & arg
F_action = arg * 2
End Function
'////////////標準モジュール/////////////
'広範囲で使うことが多いのでモジュールレベルの
'スコープを持たせることが多い。
Private cls As Class1
Sub test()
Dim ret As Long
'インスタンス作成
Set cls = New Class1
'/////////何も返さない場合/////////
cls.F_action eInit
' '又は
' Call cls.F_action(eInit)
'/////////返す場合//////////////////
ret = cls.F_action(eInit)
MsgBox "戻ってきたのは" & ret
'開放
Set cls = Nothing
End Sub
|
|