プロシージャー・ビルダー

プロシージャー・ビルダー(ALT P)は、特定の設定(ScreenUpdatingなど)でプロシージャーを素早く生成します。デフォルトのプロシージャ設定を保存しておくと、新しいプロシージャを書くときの時間を節約できます。

出力:

procedure builder output
使用例
  • 希望の設定でサブプロシージャや関数をすばやく作成。
  • 将来の使用のために設定を保存します。

設定をデフォルトとして保存

現在の設定をデフォルトとして保存するには(将来簡単にアクセスできるように)、ビルダーの右下にある一番下をクリックします:

procedure builder save settings

設定の説明

プロシージャー・ビルダーで利用可能な設定の説明については、以下をお読みください。

関数とサブセット

コーディング(VBAやその他の言語)を行う場合、コードは通常プロシージャに格納される。プロシージャは、呼び出す(実行する)ことができるコードのブロックに過ぎません。Excelでマクロを記録するというコンセプトはよくご存知でしょう。VBAには2種類のプロシージャがあります:VBAには2種類のプロシージャがあります。VBAのプロシージャには、サブルーチン(Sub)とファンクションの2種類があります:

  1. 関数は値を返します。
  2. 関数はエクセルの数式で使用できる
  3. 関数は、他のプロシージャ(またはExcelの数式)を介してのみ呼び出すことができます。コマンドボタンに関数を割り当てたり、マクロリストから関数を呼び出したりすることはできません。

完成した関数とサブ関数は次のようになります:

example procedures

Functionは値を返すので、VBAに期待する値のタイプを伝える必要があります。上記では、Functionがブール値(TRUEまたはFALSE)であることを宣言しています:

関数 Ex_Function() As Boolean

代わりに、FunctionをVariant型として宣言することができます:

関数 Ex_Function() As Variant

プロシージャー・ビルダーは、すべてのFunctionをVariant型に設定します。

ここで Sub と Function を切り替えます:

procedure builder sub function

名称と内容

プロシージャーに説明的な名前をつけ、そのプロシージャーが何をするのかを説明するコメントを加えることは重要である。あなたのコードは、今のあなたにとっては意味のあるものであっても、他の誰か(将来の自分を含む)にとっては意味のないものであるかもしれません。作成したプロシージャーには必ずコメントをつけるのがベストプラクティスです。

ここに名前とコメントを追加する:

procedure builder name description

プライベート対パブリック(上級)

デフォルトでは、プロシージャはマクロリスト(サブスクリプションのみ)からアクセス可能で、他のプロシージャから呼び出すことができます。Private宣言は、マクロリストからプロシージャを非表示にし、現在のコードモジュールからのみプロシージャにアクセスできるように設定します(注:技術的には、Application.Runを使用することでこれを回避できます)。

Private宣言を行うには、プロシージャー名の前にPrivateを追加します:

Private Sub Ex_Sub

モジュール全体を「プライベート」と宣言することもできる。コード・モジュールの先頭に Private Module を追加します:

プライベート・モジュール

モジュール全体をプライベートとしてマークすると、マクロリストからすべてのプロシージャが非表示になりますが、他のモジュールからは簡単に参照できます。

ここでパブリックかプライベートを定義します:

vba code module

設定

すべてのアプリケーション(Excel、PowerPoint、Outlookなど)には、アプリケーションレベルの設定があります。これらの設定のいくつかは、VBAコーディングにとって非常に重要です。重要: アプリケーションレベルの設定は、プロシージャとは独立しています。プロシージャ終了後に手動で「再設定」することはありません。代わりに、必要なときに手動で再度変更する必要があります。

プロシージャー・ビルダーでは、以下のアプリケーション・レベルの設定を行うことができます:

注:「完了後にメッセージボックスを表示する」はアプリケーションの設定ではないので、次のセクションで説明します。

ScreenUpdatingを無効にする– プロシージャの実行中、画面は更新されない。これにより、処理時間を大幅に短縮することができる。

Disable Automatic Calculations– これはExcelの設定で、自動計算をオフにします。処理時間を大幅に短縮することができます。

警告を無効にする– 警告メッセージやプロンプトはユーザーに表示されません。代わりにVBAはデフォルトのアクションを処理します。

イベントを無効にする– イベントは、コードを実行させる「トリガー」です(例:ワークブックを開く、シートをアクティブにする、セルを変更するなど)。ワークブックにイベントがある場合、意図しない動作(無限ループを含む)を防ぐために、コードの実行中にイベントを無効にしたい場合があります。

プロシージャ完了時のメッセージボックス– 実行に数秒以上かかるプロシージャの場合、完了時にメッセージボックスを表示することが理にかなっていることがよくあります。これは、プロシージャの実行が終了したことをユーザーに警告するものです。私たちのクライアントの場合、通常、実行に15秒以上かかるすべてのプロシージャーに対してメッセージボックスによるアラートを設定します。

エラー処理– デフォルトでは、VBAはエラーが発生するとコードの実行を停止し、ユーザーにコードの「デバッグ」を促します。これはテスト/開発時には望ましいことです。しかし、他の方法でエラーを処理することが望ましいシナリオも多くあります。

エラー処理は手続きレベルで定義される。アプリケーション・レベルの設定ではない。したがって、デフォルト以外のエラー処理を必要とするプロシージャーは、エラー処理宣言を必要とする:

  • On Error Resume Next:VBAはエラーを含む行をスキップして次の行に進みます。
  • On Error Goto Error_Handle:エラーが発生すると、VBAはプロシージャの定義されたセクション(‘Error_Handle’)に「移動」します。これは、エラー時にメッセージ・ボックスを表示したり、再試行したり、コードのセクションをスキップしたりするのに便利です。
  • On Error Goto End:これは前の設定と同じですが、ここでは “go to “はプロシージャの最後のセクションに移動します。

エラー処理をデフォルトに戻すには、次のように入力する:

エラー発生時に 0

これはテスト/開発時には望ましい。しかし、他の方法でエラーを処理することが望ましいシナリオはたくさんある。

注意: エラーを意図的に発生させたり、エラー処理でエラーを処理したりすることは「ベストプラクティス」です。その代わりに、よりスマートなコードを使用して、そもそもVBAエラーが発生しないようにすべきです。

プロシージャー・ビルダーエラー処理:

[get_templateテンプレート=”template-parts/pagination/am-documentation”]。

Excel の自動化を開始