最高のVBAガイド(初心者向け)これまでに必要なもの

ほぼすべてのMicrosoftOffice製品で実行されるVBAプログラミング(VBA programming)プラットフォームは、これらの製品の使用を強化するために誰でも使用できる最も強力なツールの1つです。

初心者向けのこのVBAガイドでは、 (VBA)Officeアプリケーションに開発者(Developer)メニューを追加する方法、 VBAエディターウィンドウに入る方法、およびExcelWordPowerpointVBAの使用を開始できるように基本的なVBAステートメントとループがどのように機能するかを説明します。 (VBA)Outlook、およびOneNote

このVBAガイドでは、最新バージョンのMicrosoftOffice製品を使用しています。以前のバージョンを使用している場合は、スクリーンショットと若干の違いが見られる場合があります。

VBAエディタを有効にして使用する方法(How To Enable & Use The VBA Editor)

このガイドで使用されているOffice(Office)製品のいずれにも、参照されている開発者(Developer)メニューがないことに気付く場合があります。開発者メニューは、ExcelWordOutlook、およびPowerpointでのみ使用できます。OneNoteには、アプリケーション内からVBAコードを編集するためのツールはありませんが、 OneNote APIを参照して、他のOfficeプログラム からOneNoteと対話することはできます。

これを行う方法については、次のAdvancedVBA(Advanced VBA)ガイドで学習します。

  • オフィス製品で開発者(Developer)メニューを有効にするには、 [ファイル(File)]メニューを選択し、左側のナビゲーションメニューから [オプション]を選択します。(Options)
  • [オプション(Options)]メニューのポップアップが表示されます。左側のナビゲーションメニューから[リボンのカスタマイズ(Customize Ribbon)]を選択します。

左側のリストには、そのOffice(Office)アプリケーションで使用可能なすべてのメニューとメニューコマンドが含まれています。右側のリストは、現在利用可能またはアクティブ化されているものです。

  • 右側のリストにDeveloperが表示されているはずですが、アクティブ化されません。チェックボックスを選択するだけで、(Just)開発者(Developer)メニューがアクティブになります。

  • 右側に[開発者(Developer)]が表示されない場合は、左側の[コマンドを選択(Choose commands)]ドロップダウンから[すべてのコマンド(All Commands)]に変更します。リストから開発者(Developer)を見つけ、中央の[Add>> ]を選択して、そのメニューをリボン(Ribbon)に追加します。
  • 完了したら、[ OK](OK)を選択します。
  • 開発者(Developer)メニューがアクティブになったら、メインアプリケーションウィンドウに戻り、トップメニューから 開発者(Developer)を選択できます。
  • 次に、リボンの[コントロール(Controls)]グループから[コードの表示]を選択して、 (View Code)VBAエディターウィンドウを開きます。

  • これにより、 VBA(VBA)エディターウィンドウが開き、次のいくつかのセクションで学習するコードを入力できます。

  • 毎日使用するいくつかのOfficeアプリケーションに(Office)開発者(Developer)メニューを追加してみてください。VBAエディタウィンドウを開くことに慣れたら、このガイドの次のセクションに進んでください。

初心者向けの一般的なVBAプログラミングのヒント(General VBA Programming Tips for Beginners)

VBAエディターを開くと、左側のパネルのナビゲーションオプションが(VBA)Officeアプリケーションごとに異なって表示されます。

これは、VBAコードを配置できる使用可能なオブジェクトが、アプリケーションにあるオブジェクトによって異なるためです。たとえば、Excelでは、ブックまたはシートオブジェクトにVBAコードを追加できます。Wordでは、 VBAコードをドキュメントに追加できます。パワーポイント(Powerpoint)では、モジュールのみ。

だから、さまざまなメニューに驚かないでください。VBAコードの構造と構文は、すべてのアプリケーションで同じです。唯一の違いは、参照できるオブジェクトと、 VBA(VBA)コードを介してそれらのオブジェクトに対して実行できるアクションです。

VBAコードを介して実行できるさまざまなオブジェクトとアクションについて詳しく説明する前に、まず、 VBAコードを作成するときに使用できる最も一般的なVBAの構造と構文を見てみましょう。

VBAコードを配置する場所(Where To Put VBA Code)

VBAエディターを使用している場合は、編集ウィンドウの上部にある2つのドロップダウンボックスを使用して、コードを添付するオブジェクトと、コードを実行するタイミングを選択する必要があります。

たとえば、Excelでは、[(Excel)ワークシート](Worksheet)と[アクティブ化(Activate)]を選択すると、ワークシートが開かれるたびにコードが実行されます。 

VBAコードをトリガーするために使用できるその他のワークシートアクションには、ワークシートが変更されたとき、ワークシートが閉じられたとき(非アクティブ化されたとき)、ワークシートの計算が実行されたときなどがあります。

エディターでVBA(VBA)コードを追加するときは、必ずVBAコードをオブジェクトに配置し、そのコードをトリガーするために使用する正しいアクションを使用してください。

VBAIFステートメント(VBA IF Statements)

IFステートメントは、他のプログラミング言語と同じようにVBAで機能します。(VBA)

IFステートメントの最初の部分は、条件または条件のセットが真であるかどうかを調べます。これらの条件は、ANDまたはOR演算子で結合して、リンクすることができます。

1つの例は、スプレッドシートの成績が「合格」の成績を上回っているか下回っているかを確認し、合格または不合格のステータスを別のセルに割り当てることです。

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

ステートメント全体を1行にまとめたくない場合は、行の最後に「_」記号を追加することで、ステートメントを複数の行に分割できます。

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

この手法を使用すると、多くの場合、コードの読み取りとデバッグがはるかに簡単になります。

次のループのVBA(VBA For Next Loops)

IFステートメントは、単一のセルを調べる上記の例のように、単一の比較に最適です。しかし、セルの全範囲をループして、それぞれに対して同じIFステートメントを実行したい場合はどうでしょうか。

この場合、FORループが必要になります。 

これを行うには、範囲の長さを使用し、データを含む行数でその長さをループする必要があります。

これを行うには、範囲変数とセル変数を定義し、それらをループする必要があります。また、結果を適切な行に出力できるように、カウンターを定義する必要があります。したがって、VBAコードには最初にこの行が含まれます。

Dim rng As Range、cell As Range
Dim rowCounter as Integer

範囲サイズを次のように定義します。 

Set rng = Range(“B2:B7”)
rowCounter = 2

最後に、FORループを作成して、その範囲内のすべてのセルをステップスルーし、比較を行うことができます。

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

このVBAスクリプト(VBA script)を実行すると、実際のスプレッドシートに結果が表示されます。

VBAのWhileループ(VBA While Loops)

Whileループも、 (Loop)FORループと同様に一連のステートメントをループしますが、ループが継続する条件は、真のままである条件です。

たとえば、次のようにrowCounter変数を使用するだけで、上記と同じFORループを(FOR)WHILEループとして記述できます。(WHILE)

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

注:行カウンターは2から始まり、データが終了する行7で終了する必要があるため、 rng.Count + 2ただし、範囲(B2:B7)のカウントは6のみであり、Whileループは、カウンターがカウンターよりも大きい場合にのみ終了します。したがって、最後のrowCounter値は8(またはrng.Count(GREATER) + 2)である必要があります。

次のようにWhileループを設定することもできます。

While rowCounter <= rng.Count + 1

rowCounter変数がデータの最後(行7)に達すると、ループが終了する可能性があるため、範囲カウント(6)を1だけインクリメントできます。

VBADoWhileおよびDoUntilループ(VBA Do While and Do Until Loops)

DoWhileループとDoUntilループは、Whileループとほぼ同じですが、動作が少し異なります。

  • Whileループ(While Loop)は、ループの開始時に条件が真であるかどうかをチェックします。
  • Do-Whileループ(Do-While Loop)は、ループ内のステートメントを実行した後、条件が真であるかどうかをチェックします。
  • Do-Untilループ(Do-Until Loop)は、ループの実行後も条件がfalseであるかどうかをチェックします。

この場合、上記のWhileループをDo-Whileループとして次のように書き直します。

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

この場合、ロジックはあまり変更されませんが、すべてのステートメントが実行された後にロジックの比較が行われることを確認したい場合は(少なくとも一度は何でも実行できるようにします)、Do-WhileまたはDo-Untilループが適切なオプションです。

VBASelectCaseステートメント(VBA Select Case Statements)

VBAコードの構造化を開始するために理解する必要がある論理ステートメントの最後のタイプは、SelectCaseステートメント(Select Case)です。

上記の例で、合格不合格だけではない採点方法が必要だとします。代わりに、AからFまでの文字グレードを割り当てます。

これは、次のSelectCase(Select Case)ステートメントを使用して実行できます。

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

このVBAスクリプトを実行した後のスプレッドシートは、次のようになります。

これで、MicrosoftOfficeアプリケーションでVBAの使用を開始するために知っておく必要のあるすべてのことがわかりました。



About the author

私は長年 Android とオフィス ソフトウェアを扱ってきたコンピューター技術者です。私はまた、過去 5 年ほどの間、人々に Mac の使い方を教えてきました。あなたのコンピュータの問題を解決する方法を知っている人を探しているなら、おそらく私がお手伝いできるでしょう!



Related posts