VBAVBAを使い始める

Download VBA for free

備考

このセクションでは、vbaの概要と、なぜ開発者がそれを使いたいのかを概説します。

また、vba内の大きなテーマについても言及し、関連するトピックにリンクする必要があります。 vbaのドキュメンテーションは新しいものなので、これらの関連トピックの初期バージョンを作成する必要があります。

バージョン

バージョン Officeバージョンリリースノート発売日
Vba6 ? - 2007年 [いつか] [1] 1992-06-30
Vba7 2010年〜2016年 [blog.techkit.com] [2] 2010-04-15
Mac用VBA 2004年、2011年〜2016年 2004-05-11

Microsoft OfficeでのVisual Basic Editorへのアクセス

Alt + F11を押すか、開発者タブに行き、「Visual Basic」ボタンをクリックすると、Microsoft OfficeアプリケーションのいずれかでVBエディタを開くことができます。リボンに[開発者]タブが表示されない場合は、これが有効になっているかどうかを確認します。

デフォルトでは、開発者タブは無効になっています。 「開発者」タブを有効にするには、「ファイル」 - >「オプション」に移動し、左側のリストで「リボンのカスタマイズ」を選択します。右の "リボンのカスタマイズ"ツリービューで開発者ツリー項目を見つけて、開発者チェックボックスのチェックをオンにします。 [OK]をクリックして[オプション]ダイアログボックスを閉じます。

ファイルオプションメニュー

開発者タブがリボンに表示され、 "Visual Basic"をクリックしてVisual Basic Editorを開くことができます。あるいは、「コードを見る」をクリックすると、現在アクティブな要素のコードペイン、たとえばWorkSheet、Chart、Shapeを直接表示することができます。

開発者タブ

VBE

VBAを使用すると、対話形式で(手動で)実行できるほぼすべての操作を自動化でき、Microsoft Officeでは使用できない機能も提供できます。 VBAは、人間の介入なしに文書を作成し、テキストを追加し、書式を設定し、編集し、保存することができます。

デバッグ

デバッグは非常に強力な方法であり、誤って動作している(または動作していない)コードを詳しく見て修正します。

コードを段階的に実行する

デバッグ中にまず行うべきことは、特定の場所でコードを停止してから、それを1行ずつ実行して、それが予想どおりに起こっているかどうかを確認することです。

  • ブレークポイント( F9 、デバッグ - ブレークポイントの切り替え):ブレークポイントは、実行された行(宣言ではなく)に追加したり、実行が停止したポイントに達したり、ユーザーに制御を与えたりすることができます。
  • 空白行にStop キーワードを追加して、実行時にコードをその場所に停止させることもできます。これは、たとえば、 F9でブレークポイントを追加できない宣言行の前に
  • ステップイン( F8 、デバッグ - ステップイン):ユーザ定義のサブ/関数の呼び出しであれば、1行のコードしか実行しません。
  • ステップオーバー( Shift + F8 、デバッグ - ステップオーバー):1行のコードを実行し、ユーザー定義のサブ/関数を入力しません。
  • ステップアウト( Ctrl + Shift + F8 、デバッグ - ステップアウト):現在のサブ/ファンクションを終了します(終了までコードを実行します)。
  • カーソルまで実行( Ctrl + F8 、デバッグ - カーソルまで実行):カーソルで行に達するまでコードを実行します。
  • Debug.Print を使用すると、実行時にイミディエイトウィンドウに行を印刷できます。 Debug.? 使用することもできDebug.? Debug.Print ショートカットとして

ウォッチウィンドウ

行ごとにコードを実行することは、最初のステップであり、詳細を知る必要があり、そのためのツールの1つがウォッチウィンドウ(ビュー - ウォッチウィンドウ)です。ここでは、定義された式の値を見ることができます。ウォッチウィンドウに変数を追加するには、次のいずれかを行います。

  • それを右クリックし、「ウォッチを追加」を選択します。
  • ウォッチウィンドウを右クリックし、[ウォッチを追加]を選択します。
  • デバッグ - 時計を追加します。

新しい式を追加するときには、その値を見たいだけでなく、真であるか値の変化時にコード実行を中断するかを選択できます。

イミディエイトウィンドウ

イミディエイトウィンドウでは、 Print キーワードか1つの疑問符 " ? "を前に付けて、任意のコードを実行したりアイテムを印刷したりできます?

いくつかの例:

  • ? ActiveSheet.Name - アクティブなシートの名前を返します。
  • Print ActiveSheet.Name - アクティブなシートの名前を返します。
  • ? foo -の値を返しますfoo *
  • x = 10xx = 10 設定する*

*イミディエイトウィンドウで変数の値を取得/設定することは、実行時にのみ行うことができます

ベストプラクティスのデバッグ

あなたのコードが期待どおりに動作しないときは、最初にすべきことは間違いを探して慎重にもう一度読むことです。

それでも問題が解決しない場合は、デバッグを開始してください。短い手順では、行単位で実行するほうが効率的ですが、長い方の場合は監視される式にブレークポイントやブレークを設定する必要がありますが、ここでの目的は行が期待通りに動作しないことを発見することです。

間違った結果を返す行があってもその理由がはっきりしていない場合は、変数の値が間違っているかどうかを理解するのに役立つ表現を簡素化したり、変数を定数に置き換えたりしてみてください。

それでも解決できない場合は、援助を依頼してください。

  • あなたの問題を理解するためにできるだけコードの一部を含める
  • 問題が変数の値と関連していない場合は、定数で置き換えます。 (したがって、 Sheets(a*b*c+d^2).Range(addressOfRange) Sheets(4).Range("A2")
  • どの行が間違った振る舞いをしているのか、それは何か(エラー、間違った結果...)

最初のモジュールとHello World

まずコーディングを開始するには、左のリストでVBAプロジェクトを右クリックし、新しいモジュールを追加する必要があります。最初のHello Worldコードは次のようになります。

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub
 

テストするには、ツールバーのPlayボタンを押すか、単にF5キーを押します。おめでとう!初めてのVBAモジュールを構築しました。

ADOの使用