Public WithEvents コマンド As CommandButton
Public WithEvents テキスト As TextBox
Private Sub コマンド_Click()
テキスト.Value = IIf(テキスト.Value = "有", "無", "有")
End Sub
Private Sub Form_Load()
Static co As New Collection 'Class1保存用
Dim i As Integer
For i = 1 To 5
co.Add New Class1
Set co(co.Count).テキスト = Controls("テキスト" & i)
Set co(co.Count).コマンド = Controls("コマンド" & i)
Controls("コマンド" & i).OnClick = "[イベント プロシージャ]"
Next
End Sub
作動しますが汎用性を持たせたいのです。
Set co(co.Count).テキスト = Controls("テキスト" & i)
Set co(co.Count).コマンド = Controls("コマンド" & i)
テキストのところに、txtを含んだテキストボックスにイベントを発生させてるというような事はできますか?
例)txtテスト
コマンドボタンなら、cmdを含んだボタンをクリックすると、イベントが発生する
例)例)cmdボタン
ワイルドカードを利用して、色々ためしたのですが、出来ませんでした。
お手数ですが、ご教示をお願いします。
正直、ExcelVBAはよくわかりませんが、ググってみました。
これは役に立ちませんか?アレンジすれば、いけるかも?
リンクがうまく貼れなかったようなので、飛べないときはググッて下さい。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13236877383
提示のクラスモジュールは、コマンドボタンとテキストボックスを持っています。つまり、コマンドボタンとテキストボックスが関連付けられていることになります。
この関連付けをどのように表現するかを決める必要がありますね。
例えば、
cmdホゲ と txtホゲ というように、先頭3文字でコントロールの種類、後の部分で項目名を表現するというような仕様にするとします。
こうすると下記のようなコードでいけます。
質問のコード、実際には動作しませんね。
動作確認済みのコードかと思って回答コード書きましたが、これでは動きません。
ctl.OnClick = "[イベント プロシージャ]" とイベントとVBAを関連付けるコードはクラスモジュール内に書かないと動かないです。
サンプル作成して気が付きました。
下記は動作確認済みです。
クラスモジュール Class1
フォームモジュール
りんご様 回答ありがとうございました。
hatena様 いつもご教示ありがとうございます。
私の書き方が悪かったとおもいます。
図のように、コマンド51をクリックすると、テキスト0に、有、無が表示されるようにしたいのです。
テキスト0の名前は、txtテキスト0
コマンド51の名前は、cmdコマンド51です。
色々試したのですが、作動しません。
できましたら、もう一度、コードのご教示をお願いします。
本当に申し訳ありません。
テキスト0の名前を、
txt0
コマンド51の名前を、
cmd0
に変更してみましょう
hirotonさんも指摘していますし、上の回答でも、下記のように仕様を提示してます。
もし、コントロールの名前を変更せずにということなら、下記のような仕様でどうでしょうか。
(こちらの仕様の方がコードがシンプルになるし、変更に強いコードになります。)
仕様
コマンドボタンのTagプロパティに関連付けるテキストボックス名を設定しておく。
例
コマンドボタン名「コマンド51」
テキストボックス名「テキスト0」
の場合、コマンドボタン「コマンド51」のTagプロパティに「テキスト0」と設定する。
クラスモジュール
フォームモジュール
汎用性を持たせるのは凄い事だけど、貴方にしか保守出来なくなるのではないかと心配です。
>> 5
AccessVBAで画像を作りたいのであれば、『テキストボックス配置、ボタン配置、クリック時イベント:[イベントプロシージャ]』、ここまでノーコードじゃダメなの?
hiroton様 回答ありがとうございました。
りんご様 仰る通りですね。ちょっと事情がありまして、質問しました。
hatena様 いつも素晴らしいコードありがとうございます。Tagプロパティは初めて知りました。
返信が遅れて申し訳ありません。
本当にありがとうございました。