ExcelでVBAマクロ・スクリプトを作成する方法【初心者向け完全ガイド】
Microsoft Excelでは、マクロやVBA(Visual Basic for Applications)スクリプトを使って、機能やコマンドを自動化できます。VBAはExcelでマクロを作成するために使われるプログラミング言語で、特定の条件に基づいて自動コマンドを実行することも可能です。
マクロとは、あらかじめ記録しておいた一連のコマンドのことです。特定の操作を行うと自動的に実行されます。経理処理、プロジェクト管理、給与計算など、Excelで繰り返し行う作業があるなら、これらのプロセスを自動化することで大幅な時間節約につながります。
Excelのリボンの開発タブでは、マウスのクリックやキー入力をマクロとして記録できます。しかし、マクロだけでは対応しきれない複雑な処理もあります。そこでVBAスクリプトが大きな力を発揮します。VBAを使えば、より高度で複雑なスクリプトを作成できるのです。
この記事では、以下の内容について解説します。
- スクリプトとマクロの有効化
- Excelでマクロを作成する方法
- マクロの具体的な使用例
- VBAについてさらに学ぶ
- VBAを始めるためのボタンの作成
- ボタンに機能を持たせるコードの追加
- 動作確認の方法
スクリプトとマクロを有効にする
ExcelでマクロやVBAスクリプトを作成する前に、まずリボンメニューの開発タブを有効にする必要があります。開発タブはデフォルトでは表示されていません。有効にする手順は以下の通りです。
- Excelワークシートを開きます。
- ファイル>オプション>リボンのユーザー設定をクリックします。
- 開発の横にあるチェックボックスにチェックを入れます。
- リボンメニューから開発タブをクリックします。
- 次にマクロ セキュリティをクリックし、すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります)にチェックを入れます。
- 続いてOKをクリックします。
マクロがデフォルトで無効になっており、警告が表示される理由は、マクロがコンピューターコードであり、マルウェアを含む可能性があるためです。
Excelやその他のMicrosoft製品で共有プロジェクトを進める場合は、ドキュメントが信頼できるソースからのものであることを必ず確認してください。
また、スクリプトやマクロの使用が終わったら、悪意のあるコードが他のドキュメントに感染するのを防ぐため、すべてのマクロを無効にしておきましょう。
Excelでマクロを作成する
マクロの記録中にExcelで行ったすべての操作は、そのマクロに追加されていきます。
- 開発タブからマクロの記録をクリックします。
- マクロ名、ショートカットキー、説明を入力します。マクロ名は必ず文字で始まり、スペースを含んではいけません。ショートカットキーには英字を指定します。
次に、マクロの保存先を以下の選択肢から決めます。
- 個人用マクロブック:マクロを保存した非表示のExcelドキュメントが作成され、どのExcelファイルでも使用できます。
- 新しいブック:作成したマクロを保存するための新しいExcelドキュメントが作成されます。
- 作業中のブック:現在編集中のドキュメントにのみ適用されます。
設定が完了したらOKをクリックします。
- 自動化したい操作を実行します。完了したら記録終了をクリックします。
- マクロを使用したいときは、設定したキーボードショートカットで呼び出せます。
マクロの具体例
まず、顧客名と未払い金額をまとめた簡単なスプレッドシートを例にしましょう。ワークシートを書式設定するマクロを作成するところから始めます。
たとえば、「姓と名を別々の列に分ける」といった書式に、すべてのスプレッドシートを統一したいとします。
手動で変更してもよいのですが、マクロを使ったプログラムを作成すれば、正しい書式に自動的に整形してくれます。
マクロを記録する
- マクロの記録をクリックします。ここではマクロ名をFormat_Customer_Dataとし、OKをクリックします。
- 目的の書式にするため、最初の列の見出しをFirst Name(名)に変更します。
- A列の隣に列を挿入し、Last Name(姓)と入力します。
- 1列目の氏名全体(まだ姓名が一緒になっている状態)を選択し、リボンからデータをクリックします。
- 区切り位置をクリックします。
- コンマやタブなどの区切り文字によってフィールドごとに区切られたデータにチェック>次へ>スペースで区切り>次へ>完了の順に選択します。下のスクリーンショットのように、この操作で姓と名が分離されます。
- 「支払残高(Balance Due)」フィールドを書式設定するには、金額部分を選択し、ホーム>条件付き書式>セルの強調表示ルール>指定の値より大きい>0の順にクリックします。
これで、残高があるセルが強調表示されます。書式設定の効果がわかりやすいよう、残高ゼロの顧客をいくつか追加しています。
- 開発タブに戻り、記録終了をクリックします。
マクロを適用する
次に、マクロを記録する前の元のスプレッドシートに戻り、正しく書式設定してみましょう。マクロをクリックし、作成したばかりのマクロを選択して実行します。
マクロを実行すると、すべての書式設定が自動的に行われます。今回作成したマクロはVisual Basic Editor(VBE)に保存されています。
マクロの実行方法はいくつかあります。詳しくは「マクロの実行」に関する記事をご覧ください。
VBAについてさらに学ぶ
VBAについて学ぶには、開発タブからマクロをクリックします。自分が作成したマクロを見つけて編集をクリックしてください。
上のボックスに表示されているコードは、マクロを記録した際に自動生成されたものです。
同じ形式で他の顧客支払いスプレッドシートを書式設定したい場合も、このコードが実行されます。
VBAを始めるためのボタンを作成する
同じく顧客と未払い金額のスプレッドシートを使って、通貨換算ツールを作成してみましょう。
- ボタン要素を挿入するには、開発タブに移動します。
- コントロールセクションの挿入の横にあるドロップダウンからActiveX コマンド ボタンを選択します。
- ボタンをスプレッドシート上の任意の場所にドラッグします。アクセスしやすく、後で変更もしやすい場所に置きましょう。
- コードを割り当てるには、ボタンを右クリックしてプロパティを選択します。ここではNameはCommandButtonのまま、CaptionをConvert(変換)にします(これがボタンに表示されるテキストです)。
ボタンに機能を持たせるコードを追加する
VBAのコーディングはExcelの画面上では行われません。別の環境で作業します。
- 開発タブに移動し、デザインモードがアクティブになっていることを確認します。
- 先ほど作成したボタンのコードにアクセスするには、ボタンを右クリックしてコードの表示を選択します。
- 下のスクリーンショットのコードを見ると、コードの冒頭(Private Sub)と末尾(End Sub)がすでに存在していることがわかります。
- 以下のコードが通貨換算の処理を担います。
ActiveCell.Value = (ActiveCell * 1.28)
このセクションの目的は、スプレッドシート内の通貨を換算することです。上記のスクリプトは、GBP(英ポンド)からUSD(米ドル)への為替レートを反映しています。セルの新しい値は、現在の値に1.28を掛けたものになります。
下のスクリーンショットは、コードを挿入した後のVBAウィンドウの様子です。
- 上部ナビゲーションのファイルから閉じてMicrosoft Excelに戻るをクリックし、Excelのメイン画面に戻ります。
うまく動いたか確認しよう
コードをテストする前に、まずデザインモードを無効化(クリックしてオフに)する必要があります。これにより、以降の意図しない修正を防ぎ、ボタンに機能を持たせることができます。
- スプレッドシートの任意のセルに数値を入力し、Convert(変換)ボタンをクリックします。数値が約4分の1増えていれば成功です。
この例では、セルに「4」を入力しました。Convertをクリックすると、数値は「5.12」に変わりました。4×1.28=5.12なので、コードは正しく実行されたことになります。
これで、Excelでマクロやスクリプトを作成する方法が理解できました。これらを活用すれば、Excelでのさまざまな操作を自動化できます。
-
Excel VBAでデータ入力フォームを作成する方法【初心者向け3ステップ完全ガイド】
ExcelでVBAを活用していると、多くの方がデータ入力フォームの作成でつまずく経験をします。本記事では、VBAを使ってExcelに見栄えが良く使いやすいデータ入力フォームを作成する方法を、わかりやすく解説します。 Excel VBAでデータ入力フォームを作る3つの簡単ステップ ここでは、Washington(ワシントン)・New York(ニューヨーク)・California(カリフォルニア)という3つのワークシートを用意しました。これらには、銀行の3つの支店の顧客の氏名・連絡先・年齢・性別のデータが登録されています。 今回の目標は、VBAを使用してこのデータベースに新しいデータを入力できる
-
Excelでマクロを使わずにボタンを作成する3つの簡単な方法
本記事では、Excelでマクロを使わずにボタンを作成する方法を解説します。通常、特定のタスクを実行するボタンはマクロを使って作成するのが一般的ですが、実はマクロなしでも事前に定義されたタスクを実行するボタンを作成できます。今回は3つの方法をご紹介します。これらの方法を使えば、Excelで簡単にボタンを作成できるようになります。記事の最後では、「マクロの記録」機能を使ったボタンの作成方法についても触れます。 練習用ワークブックはこちらからダウンロードできます。 マクロなしでExcelにボタンを作成する3つの簡単な方法 方法の説明には、異なるシートにある2つのデータセットを使用します。1つ目のシー