2020.02.01「栄養計算ソフトにユーザーフォームを導入しよう」の連載第7回です。以下の記事の続きになります。コードを読みやすいリーダブルコードに改善しよう!「栄養計算ソフトにユーザーフォームを導入しよう」の連載第6回。ExcelVBAのユーザーフォームを栄養計算ソフトに導入します。今回は読みにくいコードを改善し、リーダブルコードにする過程をご紹介します。www.y-shinno.com2018.04.01前回は,コードを見直し,読みやすく・メンテナンスのしやすいように改善していきました。今回は,検索から食品を入力するためのフォームを作成していきたいと思います。食品を追加する処理を記述しよう以前のコードをコピペでOK!コードの全体を確認しておこうまとめ連載目次コントロールを配置しよう1フォームにコントロールを配置しようまずは,フォーム:「食品の入力|検索から」に,コントロールを配置していきます。以下のようにコントロールを配置してください2コントロールにオブジェクト名とCaptionを設定しようそれぞれのコントロールにオブジェクト名とCaptionを追加していきます。以下の表に従って行ってください。追加するでは,それぞれのコントロールの役割を説明します。テキストボックスは,食品を検索するためのテキストを入力するためのものです。コマンドボタンは,1に入力されたテキストをもとに,検索を実行するためのものです。ラベルは,検索の結果(○件見つかったなど)を表示するためのものです。リストボックスは,検索の結果,見つかった食品を表示するためのものです。コマンドボタンは,4で選択した食品をシートに追加するためのものです。検索ボタンを押した際の処理を記述しようでは,いよいよ検索ボタンを押した際の処理を記述していきます。検索ボタンをクリックして,検索ボタンを押した際に実行されるプロシージャを表示させましょう。以下のコードを記述してください。Sub実際にフォームを開き,リストボックスに食品が追加されること,ラベルにメッセージが表示されることを確認してください。コードの解説では,コードの解説をしていきます。txtSerchBox.Textここでは,serchWordを検索ボックスのテキストを格納するための変数としています。検索ボックスのテキストは,テキストボックスのTextプロパティから取得できます。iここでは,本表の食品一覧に対して,検索ワードを含むものをリストボックスに追加しています。それには,InStr関数を活用しています。IStr関数は,第2引数の文字列に対して,第3引数の文字列が何番目に含まれるかを返す関数です(第1引数は検索の開始位置なので1で構いません)。本表の食品一覧に,検索ワードが含まれていれば,1以上の数字を,含まれていなければ0を返してくれます。1以上の数字が返された場合は,その食品に検索文字列が含まれるということになりますので,食品一覧に追加するための処理を行う,というわけなのです。Ifこの部分では,検索した結果,何件の食品が見つかったかを,lblMsgに表示させています。見つかったかどうかは,lstFoodに追加されている食品の数で判断しています。食品が追加されていない場合は見つからなかった旨のメッセージを表示し,見つかった場合は見つかった食品の数にメッセージを結合して表示させています。lslFoodに食品が追加されたかどうかは,LstFoodのプロパティ:ListCountで取得しました。食品を追加する処理を記述しよう先ほどまでの処理で,食品を検索し,それをリストボックスに追加することができました。食品を追加するための処理を記述していきましょう。以前のコードをコピペでOK!でも,それは以前に作成した,食品群一覧から食品を追加するのと同じコードで実装できます。それをそのままコピペしてしまいましょう。コードは以下のようになっていましたね。Sub実は,追加するためのボタンも,追加する食品を選ぶためのリストボックスもオブジェクト名は同じです。変更する箇所もなく,コピペすることで簡単に処理を実装できます。コードの全体を確認しておこうこれまでの連載で,かなり多くのコードを書いてきました。複雑になってきましたので,ここで一度すべてのコードを公開しておきます。一度,確認しておいてください。食品群一覧から食品を入力するフォームに記述されているコードから。'オプションボタンの先頭2文字が食品番号。Sub次は,検索から食品を入力するためのフォームにかかれているコードです。Sub次に,標準モジュールのModule1に記述されているコードです。ここではPublic定数を宣言していましたね。Subしっかりと入力できていましたか?もう一度,確認してみてくださいね。まとめ今回は検索から食品を入力するための処理を実装しました。次回は,細かいエラー処理などを実装して,一応の完成としたいと思います。ブログ:「みんな栄養に頼りすぎてる」では栄養情報やICTに関する情報を発信していきます。ブログ:「みんな栄養に頼りすぎてる」では栄養情報やICTに関する情報を発信していきます。コメント検索メニュータイトルとURLをコピーしました。