Excel VBAでフォームなどに大量のオブジェクトを配置して、各々のオブジェクトで同様のイベントを処理したいのですが、まとめて記述する方法はあるのでしょうか。
ユーザーフォーム上に大量の数値入力ボックス(TextBoxオブジェクト)を配置して、全てのボックスに同様の入力値制限を課そうとして、コードが肥大化して困っています。どうかよろしくお願い致します。
例)
Sub TextBox1_change()
<プロシージャー>
end sub
Sub TextBox2_change()
<プロシージャー>
end sub
・・・・・・
Sub TextBox10_change()
<プロシージャー>
end sub
(<プロシージャー>部分は共通)のように延々と記述しなくても済む方法はあるのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

引導を渡しに来ました(笑い)



イベントを一箇所で記述するのは無理です。
ただし、下記のように、

Sub TextBox1_change()
Call イベント処理
end sub
Sub TextBox2_change()
Call イベント処理
end sub
・・・・・・
Sub TextBox10_change()
Call イベント処理
end sub

Sub イベント処理
<プロシージャー>
End Sub

のようにして、楽をする方法は、あります。
(イベントによって、引数の数が違うので、そのあたりをどうするかと言う問題はありますけどね。)
    • good
    • 0
この回答へのお礼

引導を渡して頂いてありがとうございました。私はarataさんのやり方で引数にイベントを起こしたオブジェクト自身を渡して以下のようにしています。

Sub TextBox1_change()
Call イベント処理(TextBox1,...)
end sub
Sub TextBox2_change()
Call イベント処理(TextBox2,...)
end sub
・・・・・・
Sub TextBox10_change()
Call イベント処理(TextBox10,...)
end sub

Sub イベント処理 (EventObj As Object,...)
<プロシージャー>
End Sub

あきらめて、根気良く作成を続けることにします。

お礼日時:2001/02/22 12:37

Controlsコレクションを使ってみたらいかがでしょうか?


使い方はヘルプを見てください。

要はフォーム上のオブジェクトをぜーんぶ配列にしちゃったようなもんです。

この回答への補足

早速のご解答ありがとうございます。
Controlコレクションは1つのイベントに対して複数のコントロールを一括処理する場合には使えますよね。(たとえば、あるCommandButtonオブジェクトをクリックしたら全てのTextBoxオブジェクトをクリアするなど…)

質問は、複数のオブジェクトで発生するイベントに対して一括でコードを記述したいということです。イメージ的には下記のような記述方法がないかということです。(下記のコードそのものは動きません。無理がありますね・・・)
コードの美しさの問題だけなのですが・・・
例)
For Each MyTextBox In Controls
 Sub MyTextBox_change()
  ・・・・・
 End Sub
Next MyTextBox

『無理に決まってんじゃん』と断定できる方がいましたら(笑)、私に引導を渡して下さい。よろしくお願い致します。

補足日時:2001/02/21 19:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q横書きで書いた<彼>が縦書きだと<>が違い方向にでる

横書きの原稿で書いた<彼>という字が縦書き書式にすると、



と出てしまい困っています。
秀丸で書いたのですが、オズエディター、ワードで適正に出すにはどうすればよろしいでしょうか?
お教え頂きたくお願い申し上げます。

Aベストアンサー

再び失礼します。

すみませんでした!
大きさは変わらない方がいいのですね。

その場合、皆さんのおっしゃってるように、やはり縦書き用の記号をパレットから探して入力する必要があります。

ちょっと探すのは大変だとは思いますが…。
挿入をクリック。
記号と特殊文字の中の「種類」の「算術記号」の中に、∧と∨はありませんか?
見つけたら文字をクリックして下部の挿入で、wordに表示されると思います。
その際、横書き書式の場合は「∧彼∨」のように表示されると思います。

ただ、先ほど書き込みした置換の欄には、この文字がコピペ及び挿入は出来ないような気がします…。
面倒ですが「∧彼∨」を単語登録すれば、通常の入力で出てはきますが…。

お役に立てず申し訳ありません…。

Qモモが帰ってきません>_<(ポストペット)

ポストペットV3を購入してすぐ、モモに一般メールを誤って運ばせてしまいました。それっきり帰ってきてくれません>_< 今日で4日目です。いずれ、戻ってくるでしょうか?

Aベストアンサー

どうしても今すぐ戻したいのなら、ポスペを一旦終了させてから
パソコンの日付をたとえば1年後に進めてポスペを起動させれば
帰ってきますよ。
その後パソコンの日付を戻せば問題ありません

QAsusEEEPC_IEGD_8_0_Windows_V15.zip取得方法がわからない

AsusEEEPC_IEGD_8_0_Windows_V15.zipをほしいのですが取得方法がわかりません。
どなたかお教えください。

Aベストアンサー

参考URLとかで、特に問題なく手に入るみたい。

以下のMD5値が正しければですが。
dda5bcc5386beeae959c6e7ba08d998d

参考URL:http://www.oshiete-kun.net/archives/2008/03/eeepc.html

QIllustrator-->PhotoShop への貼り付けで色が変わります(><)

こんにちは、よろしくお願いします。

例えば、イラストレータで枠なし四角を書いてそれをR=43/G=64/B=111 で塗り潰します。
それをコピーして、フォトショップの新規ファイルを開き(この時、カラーモードはRGBで開きます)
ここにペーストします。

そうすると、イラストレータ上では上記のRGB値だったのが、フォトショップにペーストされた四角の塗りは
R=59/G=103/B=140 という具合にかなり変わってしまいます(><)

イラストレータ上のカラー値そのままでフォトショップに貼り付けるにはどうすればよいのでしょうか???
カラーを対応させる設定などあるのでしょうか。

どうかよろしくお願いいたします。

Aベストアンサー

双方のカラー設定ファイルを同一のもので設定しましょう。用途によって異なりますけどね。

Photoshopはshift+ctrl+Kで、Illustratorは編集-カラー設定で出来ます。
(当方バージョンがそれぞれ6.0&9.0ですが)

QIllustrator 自由なパス上にオブジェクトを配置する方法

どなたな教えて下さい。
CS3を使ってます。デコメ文字を作ってますが、フォントの外周にPNG形式の宝石を配置したいのですが、手作業でやると時間が掛ります。
自由なパス上にオブジェクトを配置する方法が無いものでしょうか?知識豊富な方教えて下さい。

Aベストアンサー

手作業でやると時間が掛ります。←どんな手作業ですか?
PNG形式の宝石を「シンボル」に登録して、シンボルスプレーツールで並べるのが早いと思います。
適当に並べて、オブジェクト>分割・拡張>OK>オブジェクト>グループ解除>選択解除>個別に選択、で移動・調整出来ます。
登録前のシンボルの大きさやシンボルツールオプションの設定を色々変えてお試し下さい。

確認済なら忘れて下さい。


このカテゴリの人気Q&Aランキング

おすすめ情報