【Call関数】変数の中に入っている文字列をCallするには?

解決


Callしたい♪  2005-08-10 08:36:24  No: 124022  IP: [192.*.*.*]

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

編集 削除
聖 羅樹  2005-08-10 09:27:19  No: 124023  IP: [192.*.*.*]

For i = 1 To 2
  If i = 1 Then
   Call Button1_Click()
  Else
   Call Button2_Click()
  End If
 Next i

ではダメなのでしょうか・・・?
おそらく Button1_Click() のような関数が結構な数あるから、
ということだとは思いますが、
上記のほうが間違いがないような気がします。

もう少し、なぜそうしたいのか、というのが分かれば、
また違った意見も出るかと思います。

編集 削除
いな  2005-08-10 09:31:48  No: 124024  IP: [192.*.*.*]

> おそらく Button1_Click() のような関数が結構な数あるから、

結構な数あるなら
私は、コントロール配列にしちいます。

編集 削除
じゃんぬねっと  URL  2005-08-10 09:42:04  No: 124025  IP: [192.*.*.*]

イベントはインターネルに起きるもので、起こすものじゃないと思うのですが...
CallByName とかじゃダメなのでしょうか?

編集 削除
特攻隊長まるるう  2005-08-10 09:50:29  No: 124026  IP: [192.*.*.*]

>CallByName とかじゃダメなのでしょうか?
参考リンク
http://madia.world.coocan.jp/vb/vb_bbs/200409_04090027.html

編集 削除
Callしたい♪  2005-08-10 17:08:15  No: 124027  IP: [192.*.*.*]

沢山のご意見ありがとうございます。
CallByName はとってもよさそうだったので、試してみてうまくいきました。しかしながら、呼び出される側をすべて Public設定にしなければならないという欠点があり、それは避けたかったので、別の方法を見つけたのですが、、、こちらも、呼び出される側をすべて Public設定にしなければならないという状況を避けることは出来ませんでした。(実験はInvokeHookSubもInvokeHookでも成功しました。)以下リンク参照。

http://www.gj.il24.net/~nakasima/vb/tips/index.htm#VBTIPS20

呼び出される側の設定を Private でキープさせたいのですが、何か他によい方法はないでしょうか?

ちなみに、目的ですが、
すでに、フォーム上に30個以上の機械のスイッチのOn/Offをを操作するボタンが配置されており、これをパターン(あらかじめ用意したファイルから情報をロードし実行時にそれを順次解釈。原材料によって操作機械/時間がことなる。)に応じて、OnにしたりOffにしたりというのを自動で行いたいのです。

宜しくお願いします。

編集 削除
K.J.K.  2005-08-10 19:16:16  No: 124028  IP: [192.*.*.*]

聖  羅樹さんとほぼ同意権なのですが、たかだか数十なら、
Select Case ... で場合分けすればいいのでは。

# イベントプロシージャの配置などに関してはともかくとして。

編集 削除
Callしたい♪  2005-08-12 03:04:37  No: 124029  IP: [192.*.*.*]

沢山のご意見ありがとうございました。私にとっては数十は「たかだか」のレベルではなかったのですが、VB6をよくご存知のみなさんから見るとこれは「たかだか」のレベルなのですね。Select Case で対応することにします。ありがとうございました。

編集 削除