Excel VBAコーディング:コードウィンドウの操作

Excel VBAコーディング:コードウィンドウの操作

Excel VBAに習熟すると、コードウィンドウでの作業に多くの時間を費やします。記録するマクロはモジュールに保存され、ExcelのVBAコードをVBAモジュールに直接入力できます。

VBAコードウィンドウの最小化と最大化

複数のプロジェクトを開いている場合、VBEには常に多数のコードウィンドウがある可能性があります。

Excel VBAコーディング:コードウィンドウの操作

コードウィンドウの過負荷は見た目がよくありません。

コードウィンドウは、Excelのブックウィンドウによく似ています。それらを最小化、最大化、サイズ変更、非表示、再配置などすることができます。ほとんどの人は、作業中のコードウィンドウを最大化する方がはるかに簡単だと感じています。そうすることで、より多くのコードを見ることができ、気が散るのを防ぐことができます。

コードウィンドウを最大化するには、タイトルバー(Xのすぐ横)にある[最大化]ボタンをクリックします。または、タイトルバーをダブルクリックして最大化します。コードウィンドウを元のサイズに復元するには、[復元]ボタンをクリックします。ウィンドウが最大化されると、そのタイトルバーは表示されないため、VBEタイトルバーの下に[復元]ボタンがあります。

2つ以上のコードウィンドウを表示したい場合があります。たとえば、2つのモジュールのコードを比較したり、あるモジュールから別のモジュールにコードをコピーしたりできます。ウィンドウを手動で配置するか、[ウィンドウ]→[水平に並べて表示]または[ウィンドウ]→[垂直に並べて表示]を選択して、ウィンドウを自動的に配置できます。

Ctrl + F6を押すと、コードウィンドウをすばやく切り替えることができます。そのキーの組み合わせを繰り返すと、開いているすべてのコードウィンドウを循環し続けます。Ctrl + Shift + F6を押すと、ウィンドウが逆の順序で切り替わります。(詳細については、これらのExcel VBAキーボードショートカットを確認してください。)

コードウィンドウを最小化すると、邪魔になりません。コードウィンドウのタイトルバーにあるウィンドウの[閉じる]ボタン(Xが表示されている)をクリックして、ウィンドウを閉じることもできます。(ウィンドウを閉じると、ウィンドウが非表示になります。何も失われません。)ウィンドウを再度開くには、プロジェクトウィンドウで適切なオブジェクトをダブルクリックします。ちなみに、これらのコードウィンドウでの作業は、実際よりも難しいように思えます。

VBAモジュールの作成

一般に、ExcelVBAモジュールは次の3種類のコードを保持できます。

  • 宣言: VBAに提供する1つ以上の情報ステートメント。たとえば、使用する予定の変数のデータ型を宣言したり、他のモジュール全体のオプションを設定したりできます。宣言は基本的にハウスキーピングステートメントです。実際には実行されません。
  • サブプロシージャ:実行されると、何らかのアクションを実行するプログラミング命令のセット。
  • 関数プロシージャ:単一の値を返すプログラミング命令のセット(SUMなどのワークシート関数と概念が似ています)。

1つのVBAモジュールに、任意の数のSubプロシージャ、Functionプロシージャ、および宣言を格納できます。ええと、制限あります—モジュールあたり約64,000文字。64,000文字の制限に近づくことすらありそうにありません。しかし、そうした場合、解決策は簡単です。新しいモジュールを挿入するだけです。

VBAモジュールをどのように編成するかは完全にあなた次第です。アプリケーションのすべてのVBAコードを単一のVBAモジュールに保持することを好む人もいます。コードをいくつかのモジュールに分割するのが好きな人もいます。家具を配置するのと同じように、それは個人的な選択です。

VBAコードをモジュールに取り込む

空のVBAモジュールは、一部の中華レストランの窓に見られる偽物のようなものです。見た目は良いですが、あまり効果はありません。意味のあることを行う前に、VBAモジュールにVBAコードが含まれている必要があります。VBAコードをVBAモジュールに取り込むには、次の3つの方法があります。

  • コードを直接入力してください。
  • Excelマクロレコーダーを使用してアクションを記録し、それらのアクションをVBAコードに変換します。
  • あるモジュールからコードをコピーして、別のモジュールに貼り付けます。

ExcelVBAコードを直接入力する

場合によっては、最適なルートが最も直接的なルートです。コードを直接入力することは…まあ、コードを直接入力することを含みます。つまり、キーボードを使用してコードを入力します。VBAモジュールでのテキストの入力と編集は、期待どおりに機能します。テキストの選択、コピー、切り取り、貼り付けなどを行うことができます。

Tabキーを使用して一部の行をインデントし、コードを読みやすくします。インデントは必要ありませんが、習得するのは良い習慣です。Excel VBAコーディングを学習すると、コード行のインデントが役立つ理由を理解できます。

1行のVBAコードは、必要なだけ長くすることができます。ただし、行継続文字を使用して、長いコード行を分割することもできます。1行のコード(ステートメントとも呼ばれます)を1行から次の行に続けるには、最初の行をスペースで終了し、その後にアンダースコア(_)を付けます。次に、次の行でステートメントを続けます。そして、スペースを忘れないでください。スペースが前に付いていない下線文字は機能しません。

これは、3行に分割された単一のステートメントの例です。

Selection.Sort Key1:= Range( "A1")、_
  Order1:= xlAscending、Header:= xlGuess、_
  Orientation:= xlTopToBottom

このステートメントは、1行で入力された場合(行継続文字なし)、まったく同じように実行されます。このステートメントの2行目と3行目がインデントされていることに注意してください。インデントはオプションですが、これらの行が個別のステートメントではないという事実を明確にするのに役立ちます。

VBEを設計した白塗りのエンジニアは、人々が間違いを犯すだろうと予想していました。したがって、VBEには複数のレベルの元に戻すとやり直しがあります。不要なステートメントを削除した場合は、ステートメントが再び表示されるまで、ツールバーの[元に戻す]ボタンをクリックします(またはCtrl + Zを押します)。元に戻した後、[やり直し]ボタンをクリックして、元に戻した変更を実行できます。

実際のコードを入力する準備はできていますか?次の手順を試してください。

Excelで新しいブックを作成します。

Alt + F11を押して、VBEをアクティブにします。

プロジェクトウィンドウで新しいブックの名前をクリックします。

[挿入]→[モジュール]を選択して、VBAモジュールをプロジェクトに挿入します。

モジュールに次のコードを入力します。

Sub GuessName()
Msg = "あなたの名前は"&Application.UserName& "?"
Ans = MsgBox(Msg、vbYesNo)
Ans = vbNoの場合MsgBox「ああ、気にしないで」
Ans = vbYesの場合MsgBox「私は超能力者でなければなりません!」
エンドサブ

入力したテキスト内の任意の場所にカーソルを置き、F5キーを押して手順を実行します。

F5は、[実行]→[サブ/ユーザーフォームの実行]のショートカットです。コードを正しく入力すると、Excelが手順を実行し、簡単なダイアログボックスに応答できます。ダイアログボックスのテキストは、ここに表示されているテキストとは異なります。

Excel VBAコーディング:コードウィンドウの操作

GuessNameプロシージャは、このダイアログボックスを表示します。

手順5にリストされているコードを入力すると、入力したテキストがVBEによって調整されていることに気付く場合があります。たとえば、Subステートメントを入力すると、VBEは自動的にEndSubステートメントを挿入します。また、等号の前後のスペースを省略すると、VBEによってスペースが挿入されます。また、VBEは一部のテキストの色と大文字を変更します。これはすべて完全に正常です。これは、物事をきちんと読みやすくするためのVBEの方法にすぎません。

前の手順に従った場合は、マクロとも呼ばれるVBASubプロシージャを記述しただけです。F5キーを押すと、Excelがコードを実行し、指示に従います。つまり、Excelは各ステートメントを評価し、指示されたとおりに実行します。(この新しく発見された力を頭に浮かばせないでください。)このマクロは何度でも実行できますが、数十回で魅力が失われる傾向があります。

記録のために、この単純なExcelマクロは次の概念を使用します。

  • サブプロシージャの定義(最初の行)
  • 変数(MsgおよびAns)への値の割り当て
  • 文字列の連結(結合)(&演算子を使用)
  • 組み込みのVBA関数(MsgBox)を使用する
  • 組み込みのVBA定数(vbYesNo、vbNo、およびvbYes)を使用する
  • If-Then構文の使用(2回)
  • Ending a Sub procedure (the last line)

Using the Excel VBA macro recorder

Another way you can get code into a VBA module is by recording your actions, using the Excel macro recorder.

By the way, there is absolutely no way you can record the GuessName procedure shown above. You can record only things that you can do directly in Excel. Displaying a message box is not in Excel’s normal repertoire. (It’s a VBA thing.) The macro recorder is useful, but in many cases, you’ll probably need to enter at least some code manually.

Here’s a step-by-step example that shows how to record a macro that inserts a new worksheet and hides all but the first ten rows and all but the first ten columns. If you want to try this example, start with a new, blank Excel workbook and follow these steps:

Activate a worksheet in the workbook.

Any Excel worksheet will do.

Click the Developer tab, and make sure that Use Relative References is not highlighted.

This macro is recorded using Absolute References.

Choose Developer → Code → Record Macro, or click the icon next to the Ready indicator on the left end of the status bar.

Excel displays its Record Macro dialog box.

In the Record Macro dialog box, name the macro TenByTen, specify that you want the macro stored in This Workbook, and press Shift+T for the shortcut key.

The macro can be executed when you press Ctrl+Shift+T.

Click OK to start recording. Excel automatically inserts a new VBA module into the project that corresponds to the active workbook.

From this point on, Excel converts your actions to VBA code. While you’re recording, the icon in the status bar turns into a small square. This is a reminder that the macro recorder is running. You can also click that icon to stop the macro recorder.

Click the New Sheet icon to the right of the last sheet tab.

Excel inserts a new worksheet.

Select the entire Column K (the 11th column) and press Ctrl+Shift+right arrow; then right-click any selected column and choose Hide from the shortcut menu.

Excel hides all of the selected columns.

Select the entire Row 11 and press Ctrl+Shift+down arrow; then right-click any selected row and choose Hide from the shortcut menu.

Excel hides all of the selected columns.

Select cell A1.

Choose Developer → Code → Stop Recording, or click the Stop Recording button on the status bar (the small square). Excel stops recording your actions.

この新しく記録されたマクロを表示するには、Alt + F11を押してVBEをアクティブにします。プロジェクトウィンドウでワークブックの名前を見つけます。プロジェクトに新しいモジュールがリストされていることがわかります。モジュールの名前は、マクロの記録を開始したときにブックに他のモジュールがあったかどうかによって異なります。そうでない場合、モジュールの名前はModule1になります。モジュールをダブルクリックすると、モジュールのコードウィンドウが表示されます。

アクションによって生成されるコードは次のとおりです。

サブTenByTen()
'
'TenByTenマクロ
'
'キーボードショートカット:Ctrl + Shift + T
'
  Sheets.Add After:= ActiveSheet
  Columns( "K:K")。Select
  Range(Selection、Selection.End(xlToRight))。Select
  Selection.EntireColumn.Hidden = True
  Rows( "11:11")。Select
  Range(Selection、Selection.End(xlDown))。Select
  Selection.EntireRow.Hidden = True
  Range( "A1")。Select
エンドサブ

このマクロを試すには、任意のワークシートをアクティブにして、ステップ4で割り当てたショートカットキーを押します:Ctrl + Shift + T。

マクロにショートカットキーを割り当てなかった場合でも、心配する必要はありません。使用可能なすべてのマクロのリストを表示して、必要なマクロを実行する方法は次のとおりです。

開発者→コード→マクロを選択します。キーボードファンはAlt + F8を押すことができます。

これらの方法のいずれかにより、使用可能なすべてのマクロを一覧表示するダイアログボックスが表示されます。

リストからマクロ(この場合はTenByTen)を選択します。

[実行]ボタンをクリックします。

Excelがマクロを実行すると、10行と10列の新しいワークシートが表示されます。

マクロレコーダの実行中に、任意の数のコマンドを実行し、任意の数のアクションを実行できます。Excelは、マウスの操作とキーストロークをVBAコードに忠実に変換します。

もちろん、記録後にマクロを編集することもできます。新しいスキルをテストするには、マクロを編集して、9つの行と列が表示されるワークシートを挿入してみてください。これは数独パズルに最適です。

VBAコードのコピー

コードをVBAモジュールに取り込む最後の方法は、別のモジュールまたは別の場所(Webサイトなど)からコードをコピーすることです。たとえば、あるプロジェクト用に作成したSubまたはFunctionプロシージャは、別のプロジェクトでも役立つ場合があります。コードを再入力する時間を無駄にする代わりに、モジュールをアクティブにして、通常のクリップボードのコピーアンドペースト手順を使用できます。(おそらく、キーボードショートカットのCtrl + Cをコピーして貼り付けるのが好きです。)コードをVBAモジュールに貼り付けた後、必要に応じてコードを変更できます。

ちなみに、Web上にはVBAのコード例がたくさんあります。それらを試してみたい場合は、ブラウザでコードを選択し、Ctrl + Cを押してコピーします。次に、モジュールをアクティブにし、Ctrl + Vを押して貼り付けます。

Webサイトからコードをコピーする場合、修正が必要になることがあります。たとえば、引用符は「スマート引用符」である可能性があり、単純な引用符に変換する必要があります。そして時々、長い線が回ります。誤ったステートメントは赤で表示されるため、VBEで簡単に見つけることができます。


スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。