ExcelでVBAを作成するためのヒント-リストコードとサンプルコード

以下にリストされているのは、ExcelでVBAを作成するための9つのヒントです。VBA for Excelは、カスタム計算と自動化に無数の可能性をもたらします。多くの場合、コードは数百行または数千行に達する可能性があります。コードの複雑さとサイズが大きくなるにつれて、同僚が簡単に理解できる高速で効率的なコードを書くことがますます重要になります。そうすることで、ExcelVBAモデルの保守と開発においてチームにとって非常に貴重な資産になります。ExcelVBAでのVBAは、Visual Basic forApplicationの略語です。VBAは、Microsoft Corp.によって開発されたプログラミング言語であり、に統合されています。

ExcelでVBAを作成するためのヒント

1.読みやすさを向上させるために、コードにコメントを付けます

同僚のVBAモデルを開いて、次の1時間、彼らのコードが何をしているかを正確に把握しようとしたことがありますか?そのことを念頭に置いて、コードを説明するためにそこにいなくても、コードを読んだ人にとってコードが非常に明確であるとしたら、どれほどプロフェッショナルに見えるか想像してみてください。

コメントを書くことは、VBAコードを書く上で最も重要な要素であり、数か月後に自分のコードを簡単に理解できるようになります。また、同僚に感銘を与え、優れたドキュメントを準備することですぐに評判を得て、将来のユーザーのトレーニング時間を短縮します。

ExcelでVBAを作成するためのヒント-コメント

2.明確で関連性のある名前を使用して変数と関数に名前を付けます

明確に解釈できるVBA変数と関数名を記述することで、ユーザーは時間を大幅に節約し、コードの構造とフローを明確にたどることができます。「test1」や「first_integer」などの変数名または関数名は、VBAコードを読み取ろうとする人にとって数え切れないほどの頭痛の種になります。

以下のルーチンは、米国のインフレ率が利用可能な場合、アクティブセルに貼り付けます。2番目の例が最初の例よりもどれほど明確であるかに注目してください。

悪い例:

変数の命名-悪い例

良い例え:

変数の命名-良い例

3.シンプルで効率的なVBAコードの作成に役立つ作業を計画します

コードプロジェクトを別の方法で構造化するか、コードの特定の要素に対して個別の関数を作成する必要があることに気付く前に、コードプロジェクトの作成を途中で行うことは珍しくありません。VBAの構造、達成したいこと、必要なループなどを計画することで、長期的には時間を節約できます。また、途中で発生する可能性のある潜在的なエラーと、それらに対処する方法について考える時間もあります。

ExcelでVBAを作成するためのヒント-作業を計画する

4.マクロを使用して構文をすばやく理解する

ほとんどの人にとって、マクロはVBAとコーディングの世界を最初に垣間見ることができます。経験豊富なコーダーにとっても、マクロは特定の関数またはメソッドを実行するために必要なVBA構文をすばやく理解するための優れた方法です。

VBAを使用してファイルを保存する方法がわからなかったとします。[マクロの記録]を押すと、手順を手動で実行でき、VBAエディターはそれらの手順をコードに記録します。魔法!これで、独自のルーチンでコードを再利用および適合させることができます。

ExcelでVBAを作成するためのヒント-マクロを使用する

5.独自のコードを書くことを学びます。マクロに依存しないでください!

上記のように、マクロは特定のコードがどのように記述されているかを学ぶのに非常に役立ちます。ただし、マクロはハードコーディングされており、ワークシート構造の将来の変更に適応できないため、本質的に信頼性が低く、将来性がないことを認識することが重要です。

ワークシートにさまざまなフォーマット変更を実行するマクロを記録したとします。コードの途中で、列Iを選択し、それを削除します。翌月、ファイルに追加の列が含まれているとします。これで、マクロが間違った列を削除します。自分でコーディングする方法を学ぶことで、ループを作成し、正しい列を検索してから正しく削除することができます。

独自のコードを書く

6. Option Explicitを使用して、値の欠落を回避します

VBAコードモジュールの先頭で「OptionExplicit」を使用することは、コードのスペルミスを回避するための貴重な方法です。

以下の左側の例では、OptionExplicitが有効になっていません。コードはエラーなしで実行されますが、常にゼロの答えを返します。どうして?その理由は、変数MonthIncmeのスペルが間違っているため、何も参照していないためです。何かで割ったものが常にゼロになることはありません。

2番目の例のコードを実行すると、Option Explicitはコードに未定義の変数があることを検出し、コンパイルエラーを返します。宣言されていない変数を強調表示し、問題を通知します。ルーチンの前に、各コードモジュールの先頭で常にOptionExplicitを使用する必要があります。

OptionExplicitを使用する

7.オブジェクトの選択を最小限に抑えることにより、速度を向上させます

VBAを初めて使用し、コードの実行速度が非常に遅いのはなぜか疑問に思っている場合は、.Selectメソッドを過度に使用することが主な疑いです。特に大量のデータやループを処理する場合は、絶対に必要な場合を除いて、オブジェクトの選択は避けてください。VBAでオブジェクトを選択するのは非常に遅く、通常は必要ありません。記録されたマクロには多くの.Selectメソッドが含まれていることが多いため、それらを回避する方法を学ぶことが重要です。

以下の最初の例では、ワークシートで現在の合計1,000個のセルを見つけようとしています。新しいセルを参照するたびに、そのセルを選択して、その値を取得します。ただし、シートまたはセルの選択はまったく必要ありません。セルの値を簡単に取得できます。タイマーを使用して、各ルーチンの実行にかかった時間を記録しました。2番目の例は50倍高速です。

オブジェクトの選択を最小限に抑える

オブジェクトの選択を最小限に抑える

8.時間を節約するために一般的な機能を再利用する

最も一般的なVBAルーチン(サブ)を1つの場所に保持することは、コーディングやモデル構築に費やす時間を削減するための便利な方法です。これは、「Top 10 VBA Routines」の記事の例です。この記事では、選択したセルを取得してマージを解除し、各セルに同じ見出しを適用します。マクロにキーボードショートカットを割り当てて、マクロを非常に高速に使用することもできます。

アドインとパーソナルコードモジュールに焦点を当てる、コードの再利用に関するブログ(近日公開)に注目してください。

サンプルテーブル

共通機能の再利用

9.実行時エラーを回避するために、コードを定期的にテストします

上記のヒントは、おそらく作業中のほとんどのプロジェクトに当てはまりますが、特にコーディングに関連しているため、Excel用のVBAに関連しています。コードをテストすることで、間違いやエラーが検出され、実行時に発生する可能性のある例外を適切なエラーキャッチでキャプチャできることが確認されます(VBAのエラーに関する記事を参照してください。Excel用VBAのエラーの種類VBAのエラー。以下に、それらに対処して解決するためのいくつかの戦略を示します。これから説明します)。

テストは、コード開発者としてのあなたから始める必要があります。コード自体をテストしてから、非ライブまたは影響のない環境でテストする必要があります。

満足したら、同僚にExcelモデルをテストさせる必要があります。理想的には、どのボタンを押すべきか、どの入力を入力するべきかについて、まったく手がかりを与えないでください。あなたのモデルはそれ自体を語るべきです。このテストは、コードが稼働したときに何が起こるかを示す良い指標になります。

コードをテストする

追加リソース

ExcelでVBAを作成するためのヒントをお読みいただきありがとうございます。ファイナンスは、グローバルなCertified Banking&Credit Analyst(CBCA)™CBCA™認定の公式プロバイダーです。CertifiedBanking&Credit Analyst(CBCA)™認定は、ファイナンス、アカウンティング、クレジット分析、キャッシュフロー分析をカバーするクレジットアナリストのグローバルスタンダードです。 、コベナンツモデリング、ローン返済など。誰もが世界クラスの金融アナリストになるのを支援するように設計された認定プログラム。あなたのキャリアを前進させ続けるために、以下の追加の財務リソースが役に立ちます:

  • 財務モデリングのヒント財務モデリングのヒント
  • コードのデバッグ方法(VBA)VBA:コードのデバッグ方法VBAコードを記述して実行する場合、ユーザーがコードエラーをデバッグする方法を学ぶことが重要です。コードがExcelユーザーの期待です
  • 面接のヒント–よく面接する方法面接のヒント–よく面接する方法このガイドでは、数百人の候補者に面接した財務チームの数十年の直接の経験に基づいて、面接のヒントのトップ10のリストを提供します。キャリアの初期、中期、後期のいずれであっても、面接は常に神経質になる可能性があります。幸いなことに、十分に準備されています
  • VBA:サブと関数VBA:サブと関数この記事では、サブと関数の主な違いについて説明します。どちらも、で特定のタスクを実行するために使用されるコマンドのセットです。