コピー2019.01.23みなさん、こんにちは!タカハシ(@ntakahashi0505)です。「初心者向けエクセルVBAではじめてのクラスモジュール」についてシリーズでお伝えしています。「初心者でもわかるエクセルVBAのクラスモジュール」シリーズをお送りしています。今回は、エクセルVBAで自作コレクションの要素を削除するRemoveメソッドの作り方についてお伝えしていきます。tonari-it.com2019.01.22自作のコレクションから要素を削除するメソッドを追加しました。エクセル表を表すクラスを作ってそれをオブジェクトとして操作するのはいいのですが、操作した結果をエクセル表に反映させなくてはいけませんよね。いうことで、今回はシリーズ最終回。エクセルVBAで自作コレクションのデータをエクセル表に反映させるメソッドの作り方をお伝えします。結局、クラスを使うと何がいいのかまとめ連載目次:初心者でもわかる!エクセルVBAでクラスを作ろう前回のおさらいでは、前回のおさらいからです。以下のようなエクセル表があります。このエクセル表のデータを取り扱うクラスを作成しておりますが、まずは1行分のデータを表すクラスPersonがこちらです。Propertyフィールドを表すプロパティのほか、便利そうなメンバーをいくつか追加しております。それを集合として扱うために、自作コレクションを作りました。それが、以下のPersonsクラスになります。SubこのPersonsコレクションは、Personオブジェクトを集合として取り扱うものなので、結果としてPersonsコレクションがエクセル表のデータ全体を表します。前回は、このPersonsコレクションから要素を削除するRemoveメソッドを作成しました。それを検証するための標準モジュールがこちらです。Subデータをオブジェクトで操作した結果をエクセル表に反映するこれで、なんとなくエクセル表のデータをクラス化して取り扱う全体の機能ができた感じです。手順としては、以下の通り。エクセル表をもとに新規のPersonsコレクションを生成するPersonsコレクションの要素を追加したり、削除したり、変更したりするPersonsコレクションを再度エクセル表に反映するこんな流れですね。2の操作とかを、さらにユーザーフォームとかを使って操作できるようにしたら、アプリケーションぽい感じになります。それで、お気づきの通り、3のPersonsコレクションを操作した結果をエクセル表に反映させるという処理がまだありませんので、今回はそれを作っていきます。Personsコレクションのデータをエクセル表に反映するPersonsコレクションのデータをエクセル表に反映させるApplyToSheetメソッドを作成します。戻り値などは必要ないので、Subプロシージャで作ります。Sub流れとしては以下のとおりですね。作成したPersonsコレクションのApplyToSheetメソッドの動作を確認します。標準モジュールに以下のようなSubプロシージャを作りました。Sub確認をすると...バッチリですね!結局、クラスを使うと何がいいのかさて、これまで19記事も使ってクラスを作ってきたのですが、エクセル表の操作になぜここまでゴチャゴチャする必要があるのか...と思いますか?わざわざクラスを使う必要ないじゃないか...!?と思ったりしますでしょうか。このマクロには、エクセル表のデータを新規コレクションのインスタンスに取り込んだり、「こんにちは!」とメッセージを表示したり、男性かどうかを判定したり、追加したり、削除したり...といった機能があります。前述の動作確認用の標準モジュールのコードを見ていただくと、想像以上にスッキリしていませんか?色々な機能を実現するステートメントは、すべてクラスモジュールにかかれていますので、標準モジュール上では一切目にする必要がありません。標準モジュールでは、それらの機能にアクセスするためのメンバーを呼び出すことしかしていないんです。マクロのうち「機能」の部分をクラスモジュールに分離するということが実現できているのです。おかげで、標準モジュールは、その機能を「操作」をするだけの役割に徹することができるのです。機能:クラスモジュール操作:標準モジュールさらに、このエクセル表に何か新しい操作をしたくなったら、それもクラスモジュールに追加します。マクロの機能は増えても、標準モジュールのステップ数を極小に保つことができます。しますでしょ?まとめ以上、エクセルVBAで自作コレクションのデータをエクセル表に反映させるメソッドの作り方をお伝えしました。ただのエクセル表をクラスとして取り扱うメリットについても触れました。エクセル表を保護して、これらのクラスのメンバーをユーザーフォームなどで扱えるようにすると、さらにアプリケーションぽくなりますね。使い捨てのマクロでればクラス化はおそらく必要ありませんが、長いことお付き合いするデータ群であれば、クラス化をするとスッキリ管理と運用ができて、使い勝手も良くなるかも知れません。検討をしてみてくださいね。本シリーズは以上で終了となります。別のシリーズでエクセルVBAの活用法についてお伝えしていきますので、どうぞお楽しみに!連載目次:初心者でもわかる!エクセルVBAでクラスを作ろう名前は聞いたことあるけどよくわからない「クラスモジュール」。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。作成したプロシージャの中に「高速化」をするためのルーチンを入れることがよくありますが、「使い回し」できちゃったほうが便利ですよね。今回は、エクセルVBAの実行速度を高速化するための処理をクラス化する方法です。2019.05.09Excel・VBA活用術エクセルVBAでIEを操作するクラスに読み込み待ちとドキュメント取得の機能を追加する方法エクセルVBAでIEを操作する便利なクラスの作り方をお伝えしています。今回は、エクセルVBAでIEを操作するクラスに読み込み待ちをするメソッドと、ドキュメント取得をするプロパティと処理を追加します。2019.04.08Excel・VBA活用術エクセルVBAで画像ファイルをシートに追加するAddPictureメソッドの使い方ShapesオブジェクトのAddPictureメソッドで、エクセルのシート上に画像を追加する方法をご紹介しています。画像のサイズや位置が決まっている場合、手動で調整するのは手間なもの。エクセルVBAで位置やサイズを指定しておけば、面倒な調整が不要になりますよ。2017.08.21Excel・VBA活用術エクセルVBAでエラーが発生したらエラーの内容をログファイルに書き出すプログラムエクセルVBAでエラーが発生したときにそのエラーの内容をログファイルに書き出すプログラムを紹介します。Gotoステートメントと、Errオブジェクト、そしてログファイルへの書き出しです。【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更エクセルVBAで文字列を連結する、文字列の書式を変更するなどの「文字列」に関するいくつかのテクニックを紹介しつつ、データ一覧から請求書を自動で作成するというシリーズ連載の序盤の完成を目指します。2015.05.21Excel・VBA活用術エクセルVBAで一部のワークシートのみ選択してPDFで出力する方法エクセルVBAでPDF出力や印刷をする際のテクニックについてお伝えしています。今回は、エクセルVBAでArray関数を使って一部のシートのみプレビューまたはPDF出力する方法についてお伝えをします。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。