Private Sub Button1_Click()
・・・・・ (省略)
End Sub
Private Sub Button2_Click()
・・・・・ (省略)
End Sub
例えば、上記のような関数が複数あって、それを、他の関数から呼び出したい場合に変数を使いたいのですが、どうすればよいでしょうか?
例)
Private Sub Start_Click()
Dim i As Integer
Dim temp As String
For i = 1 To 2
If i = 1 Then
temp = "Button1_Click"
Else
temp = "Button2_Click"
End If
Call temp ' ←ここで、call Button1_Click と call Button2_Click を順番にやりたい。
Next i
End Sub
For i = 1 To 2
If i = 1 Then
Call Button1_Click()
Else
Call Button2_Click()
End If
Next i
ではダメなのでしょうか・・・?
おそらく Button1_Click() のような関数が結構な数あるから、
ということだとは思いますが、
上記のほうが間違いがないような気がします。
もう少し、なぜそうしたいのか、というのが分かれば、
また違った意見も出るかと思います。
> おそらく Button1_Click() のような関数が結構な数あるから、
結構な数あるなら
私は、コントロール配列にしちいます。
イベントはインターネルに起きるもので、起こすものじゃないと思うのですが...
CallByName とかじゃダメなのでしょうか?
>CallByName とかじゃダメなのでしょうか?
参考リンク
http://madia.world.coocan.jp/vb/vb_bbs/200409_04090027.html
沢山のご意見ありがとうございます。
CallByName はとってもよさそうだったので、試してみてうまくいきました。しかしながら、呼び出される側をすべて Public設定にしなければならないという欠点があり、それは避けたかったので、別の方法を見つけたのですが、、、こちらも、呼び出される側をすべて Public設定にしなければならないという状況を避けることは出来ませんでした。(実験はInvokeHookSubもInvokeHookでも成功しました。)以下リンク参照。
http://www.gj.il24.net/~nakasima/vb/tips/index.htm#VBTIPS20
呼び出される側の設定を Private でキープさせたいのですが、何か他によい方法はないでしょうか?
ちなみに、目的ですが、
すでに、フォーム上に30個以上の機械のスイッチのOn/Offをを操作するボタンが配置されており、これをパターン(あらかじめ用意したファイルから情報をロードし実行時にそれを順次解釈。原材料によって操作機械/時間がことなる。)に応じて、OnにしたりOffにしたりというのを自動で行いたいのです。
宜しくお願いします。
聖 羅樹さんとほぼ同意権なのですが、たかだか数十なら、
Select Case ... で場合分けすればいいのでは。
# イベントプロシージャの配置などに関してはともかくとして。
沢山のご意見ありがとうございました。私にとっては数十は「たかだか」のレベルではなかったのですが、VB6をよくご存知のみなさんから見るとこれは「たかだか」のレベルなのですね。Select Case で対応することにします。ありがとうございました。
ツイート | ![]() |