(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。エクセルVBAで請求データ一覧から請求書を自動で作成する方法をシリーズでお伝えしています。初心者向けエクセルVBAで請求書を作成するシリーズ。今回は、エクセルVBAで頻繁に取り扱うワークシートを「オブジェクト名」を使って指定する方法です。オブジェクト名とは何か、またその編集方法もお伝えします。tonari-it.com2017.02.12ワークシートをオブジェクト名で取り扱う方法についてお伝えしました。請求書作成ツールとしては、既に機能はしている状態ではあるのですが、ツールのメンテナンスを超絶楽ちんにする便利なテクニックがあるのでお伝えしたいと思います。VBAではエクセルシートに列の挿入があった場合、セルの指定をしている箇所をいちいち変更しなくてはいけなくなったりしますよね?しかし、列挙体を上手に使うと、エクセルシートに列の挿入があっても、簡単に対応ができるようになります。エクセルVBAでシートの列の挿入も簡単に対応できちゃう列挙体の使い方です。列挙体の使い方Enumステートメントで列挙体を定義する列挙体の値を取り出すシートの列を列挙体として定義する列挙体を使用した請求書作成プログラムまとめ連載目次:データ一覧から請求書を自動で作るシートで列の挿入があったらどうなる?請求書を作成する元データが、このようなシートに記録されているとします。本ツールでは、この「請求データ」シートを「wsData」というオブジェクト名で取り扱っており、取引先ごとのデータを集めてそれぞれの請求書を作ります。Withといったように、様々な形でシートの列やセルを指定しているんですね。ツールを運用する上で、列の挿入をしたくなるときがあります。A列に「No」というフィールド列が挿入されちゃったんですね。なってしまうと、さあ大変。With「”A:A”」は「”B:B”」、「”F:F”」は「”G:G”」...といったように、列範囲の指定も変更します。面倒です!また、面倒なだけでなく、修正ミスや修正忘れが発生しちゃいそうです。列挙体の使い方もし、そんなことが発生しそうなのであれば、列の指定を列挙体でしておくのがおすすめです。Enumステートメントで列挙体を定義する列挙体は、変更がない数値をグループとして扱う場合に使うことができる便利なもので、以下のようにEnumステートメントで定義します。Enum列挙体名は変数名のように、任意の文字列で指定します。値1,値2,...は整数値を指定します。値1を省略すると0が入り、値2以降を省略すると、直前のメンバーの値にプラス1した整数が入ります。列挙体の宣言はプロシージャ内ではなく、モジュールレベルで行います。以下のような列挙体eDataを定義しましょう。Enumこれで、それぞれのメンバーに値が定数のように格納された状態となります。列挙体の値を取り出すそして、列挙体の任意のメンバーの値を取り出す場合は列挙体名.メンバー名で取り出すことができます。Subこんなプロシージャを実行するとこんなふうに出力されるわけですね。シートの列を列挙体として定義するもうおわかりですよね。列挙体の各メンバーに列番号を割り当てておくんです。Withというように、列番号の指定を「列挙体.メンバー名」で指定しておきます。Enumこのように変更するだけで、列挙体の各メンバーに格納されている列番号が変更されてくれるので、プロシージャ内は一切変更をしなくても対応ができるようになるわけです。便利ですよね!列挙体を使用した請求書作成プログラムでは、請求書プログラムを、列挙体を使用して書き換えてみましょう。Sub文字数は若干増えた感じはありますが、列の指定がただの数値から、意味のある列挙体名とメンバー名の組み合わせになっていますので、コードの可読性も上がっていますよね。まとめ以上、エクセルVBAでシートに列挿入があっても列挙体で簡単に対応ができるよ、ということをお伝えしました。お伝えしてきた通り、列挿入があっても列挙体の定義の修正だけで済むようになりますので、その際の作業効率やミスを減らす意味でもメリットがあります。加えて、可読性も上がりますしね。列を列挙体で定義する...オススメです!連載目次:データ一覧から請求書を自動で作るお仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。【エクセルVBA】VBEのツールバーを自分好みにカスタマイズする方法VBEにあるユーザー設定で、ユーザー好みのツールバーを作成する方法をご紹介しています。コメントアウトやコンパイルなど、よく使うコマンドをツールバーにセットして画面に表示しておけば、すぐに使えて便利ですよ。コマンドのショートカットキーを忘れてしまった!なんていうときも、ツールバーにセットしておけば安心です。初心者向けエクセルVBAでIEを操作するシリーズです。今回はIEを操作してWEBページ内の検索窓に任意のキーワードを入力して送信する方法をお伝えします。VBAで、メール送信時のイベントApplication_ItemSendの引数CancelにTrueを指定することで、メール送信をキャンセルする方法をご紹介しています。この方法を使えば、メール送信ボタンを押したときに、任意のメッセージを表示させたりすることができますよ!2019.03.08Excel・VBA活用術VBAでIEを操作してJavaScriptで動作するWebページをスクレイピング「JavaScriptで動作するWebページ(動的サイト)を色々な言語でスクレイピング」することをシリーズでお伝えしています。Explorerを操作してJavaScriptで動作するWebページをスクレイピングします。「初心者でもわかるエクセルVBAのクラスモジュール」シリーズをお送りしています。今回は、エクセルVBAで自作コレクションの要素を削除するRemoveメソッドの作り方についてお伝えしていきます。【エクセルVBA】ユーザーフォームのチェックボックスを使ってみよう!ユーザーフォームを作って使ってみることを目標に、連載記事でフォームやコントロールのプロパティやメソッド、イベントをご紹介しています。今回の記事では、ユーザーフォームにチェックボックスを追加する方法と、チェックボックスのプロパティ、イベントをご紹介しています。PMいつも参考にさせていただいております。ありがとうございます。勝手に列挿入しちゃえ!」というような場合です。理想としては、列挿入されたとしてもコードは変えなくて済むことだと思ってはいるのですが...。自分でも試してみようと思いますが、もしお時間ございましたらご教授ください。PMよぶびえ様コメントありがとうございます!そんなときのために、列挙体をお使いくださいませ。Enumとすれば対応できるかと思います。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Apps2PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Apps2PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。開発者プログラムとは、またどうして期限切れになったのか2020.02.222020.02.22ノンプロ研の福岡で初イベント「ノンプロ研無料体験@福岡」を開催しました!2020.02.14GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説2020.02.092020.02.09新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法2020.02.082020.02.12Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。