VBA Textboxを変数で操作「Controlsコレクション」



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、taka(@takabou63)です(^^♪

今回はExcelVBAのユーザーフォームでテキストボックスが大量使用する場合になった時に役立つ対処法をご紹介します(^^)/

VBAでユーザーフォームを使う場合、テキストボックスはよく使うコントロールですので10や20使うこともあるかと思います。

そのテキストボックスを一つずつ全て操作するのは大変ですし、大変な手間もかかってしまいます(;^ω^)

たとえばですが、ユーザーフォーム上にテキストボックスが5個設置されている場合、コマンドボタンを押すとテキストボックスの内容がAからEまで反映されるとします、この場合のコードは

このように書くか、cells()で書いていくのが多いと思います。

ですが、上記のように書いていくにしても5個のテキストボックスならまだいいですが、10個のテキストボックスだったら?20個のテキストボックスだったらどうでしょう?
作業量はかなり増えてしまうと思います(;^ω^)

そしてセルへの書き込み以外でも使う場合はまた同じ作業をしなければいけませんし、コード数は増え、可読性も失われてしまい、これはどの処理なのか?

など作っていてわかりずらくなってしまいます。

なので今回ご紹介する方法を使いすっきりさせてあげましょう(^_-)-☆

Controlsコレクションを使ってVBAのコントロールを変数で処理

というわけで、変数で処理することにより、このようになりました。

注目はControlsコレクションです、上記にはControls(“TextBox” & i).Valueと書いてあります、ControlsコレクションによってTextBoxのオブジェクトに変数を付けることが可能になります。※もちろんTextBoxの部分をcomboboxなどにすることも可能です.

ちなみにControlsは省略可能です

このようにすることも可能です。

VBAのControlsコレクションの解説

簡単に説明をさせていただくと、TextBoxにiという変数をつけて処理をする、なので上記の場合は変数iは1から5までとしているのでTextBoxの1~5までの処理をしますよ~。という事になります。

そしてCells(, i).Value はCells(, 1~5)の内容はTextBoxの1~5ですよ=という処理をしてあげているわけです。

そして最後のControls(“TextBox” & i).Value = “”はTextBox1~5の内容を空にしますよ~という処理です。

この方法を使えばTextBoxの20だろうが30だろうが楽に処理ができます(^^♪上記の「For i = 1 To 5」の5の部分の数字を20や30に変えればいいだけなので(笑)

注意点
この方法を使うときの注意点は繰り返し処理ということです。おそらくこの方法を使えばかなりのことができますが、一括で処理したい場合などがあった場合この方法が使えません、見かけ上は一括に見えますが、高速で繰り返しているだけなのでそこのところをお忘れがないようにしてください。私はそれで少し困ったことがありました(;’∀’)

 

フォロー・チャンネル登録お願いします

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です