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

解決


Callしたい♪  2005-08-10 17:36:24  No: 124022

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 18:27:19  No: 124023

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 18:31:48  No: 124024

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

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


じゃんぬねっと  URL  2005-08-10 18:42:04  No: 124025

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


特攻隊長まるるう  2005-08-10 18:50:29  No: 124026

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


Callしたい♪  2005-08-11 02:08:15  No: 124027

沢山のご意見ありがとうございます。
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-11 04:16:16  No: 124028

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

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


Callしたい♪  2005-08-12 12:04:37  No: 124029

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加