536_vba2022-book.indb 1

2022/11/04 11:20

■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、下記 URL からダウンロードできます。

https://------------------------------------------------

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している URL や各サイトの内容は変更される場合があります。

536_vba2022-book.indb 2

2022/11/04 11:20

はじめに

多くの Excel ユーザーがマクロ活用を渇望し、多くのマクロ（Excel VBA）入門書が書店の書棚にあふれているにもかかわらず、多くのユーザーが「活かしたいけど活かせない」という状況に留まっていることに変りはないようです。そこにはさまざまな壁が横たわっています。たとえば● できるだけ専門用語を用いずに平易にマクロを作るというアプローチでは、簡単なマクロは作れたとしても、実務で役立つようなマクロは作れないという壁があるのも事実です。ならば● 本格的にフルスペックの VBA を基本からマスターするというアプローチでは、時間がいくらあっても足りないという壁に直面します。
本書はこの 2 つの壁を何とか克服したいという願いを込めて書きました。そのために、本書は2 部構成となっています。
第 1 部の入門編では、マクロは必ずしも難しくないということを実感していただきます。ために極力、専門用語は使わずに平易にマクロを作ることを目指し、それでも、かなりなマクロが開発できることを体験していただきます。ここでは最大の障壁、意味不明なメッセージに悩まされることのないように、どんなときに、どんなエラーが検出されるのか、その因果関係を事前に整理することによって克服します。
第 2 部の応用編では、入門編の勢いを借りて、実務に役立つ本格的なマクロ開発に挑戦します。
それは専門的なマクロ開発で、作ったマクロを他の人が使うといった場面でも、使い手に優しい、
ユーザーフレンドリーなマクロを目指します。そのために● 誤操作したくても誤操作のしようが無い● データに多少の誤りがあってもストップしない。再試行できる● 使い手の負担を減らし、迷わずに操作できるなど、使い手の使い易さを優先させることになります。つまり実務で使えるマクロとは作り手の負担よりも使い手の負担を抑えるユーザーフレンドリーなマクロで、そうしたマクロを開発する

iii

536_vba2022-book.indb 3

2022/11/04 11:20

ためには、ある程度の作り手の負担が求められるというわけです。それを第 1 部の入門編の勢いを足掛かりに乗り越えようとするものです。
つまり、本書はマクロに潜む最初の壁をできるだけ取り除き、平易なマクロ作りから出発しま
すが、そこに留まるのではなく、その突破口を足掛かりに、さらに現実的な課題解決のための本格的なマクロ開発へと導きます。
そのために、マクロに潜むエラーを徹底的に解説します。そうしたエラーに触れることで、エラーへの対処法を身に着け、「もう、いい！」と投げ出さずに粘り強く立ち向かう耐性を養うことが、マクロを有効なツールとして活用する道につながります。
また、最初からマクロの完成形を目指すのではなく、必要に応じて機能を追加しながら育てる
生き物として、まずは着手することを目指します。

iv

536_vba2022-book.indb 42022/11/04 11:20

目

次

目次
はじめに.......................................................................................................................... iii

第1部
第1章
1.1

ようこそマクロの世界へ ............................................. 3
そのための準備.................................................................................................... 3● 1.1.1

1.2● 1.4.3● 1.5.3● 1.6.3

2.1

料金計算マクロの実行／ 13● 1.3.2

料金計算マクロの正体／ 14● 1.4.2 VBE の起動／ 19
ワークシートの作成／ 18● 1.4.4 マクロ・ブックの保存／ 25
Sub プロシージャの作成／ 20

コンパイルエラー／ 26
論理エラー／ 27● 1.5.2

実行時エラー／ 27

セキュリティーレベル／ 31
ワークシートの列表示／ 33● 1.6.2 「開発」タブの追加／ 32

ボタンの利用.....................................................................................................37● 2.1.3● 2.1.2 ボタンマクロの作成方法／ 39
マクロの実行方法／ 37
ボタンに関するエラーとその対策／ 41

演算式.................................................................................................................43● 2.2.1

2.3

BMI マクロの正体／ 7

基本を押さえておこう .............................................. 37● 2.1.1

2.2● 1.2.2

Excel のカスタマイズ......................................................................................31● 1.6.1

第2章

BMI マクロの実行／ 5

エラーとその対策..............................................................................................26● 1.5.1

1.6

マクロのためのオプション設定／ 4

マクロの作り方..................................................................................................18● 1.4.1

1.5● 1.1.2

料金計算.............................................................................................................13● 1.3.1

1.4

マクロの背景／ 3

BMI の計算.......................................................................................................... 5● 1.2.1

1.3

入門編……1

算術演算／ 43

● 2.2.2

関係演算／ 46

● 2.2.3

論理演算／ 47

判断....................................................................................................................49● 2.3.1

If 文／ 49

● 2.3.2

ブロック If 文と入れ子／ 51v

536_vba2022-book.indb 52022/11/04 11:20

目 次

2.4

多肢選択.............................................................................................................56● 2.4.1

2.5● 2.6.3● 2.7.3

3.1● 3.2.3● 3.3.3● 3.4.2● 3.4.3● 3.2.2 金種計算マクロを使ってみよう／ 86
処理の概要／ 86
金種計算マクロの処理内容／ 87● 3.3.2 面積電卓マクロを使ってみよう。／ 89
処理の概要／ 89
面積電卓マクロの処理内容／ 90

アルコール分解の時間計算／ 91
アルコール電卓を使ってみよう／ 91
アルコール電卓マクロの処理内容／ 93

メタボ判定.........................................................................................................95● 3.5.1● 3.5.3● 3.5.2 メタボ判定マクロを使ってみよう。／ 95
処理の概要／ 95
メタボ判定マクロの処理内容／ 96

日の丸.................................................................................................................98● 3.6.1● 3.6.2

3.7● 3.1.2 最大公約数マクロ／ 84
処理の概要／ 83
最大公約数マクロの処理内容／ 84

アルコール電卓..................................................................................................90● 3.4.1

3.6● 2.7.2 ワークシート変数の活用／ 79
ワークシートの明記／ 78● 2.7.4 他シートに関するエラーとその対策／ 81
使用例／ 80

面積電卓.............................................................................................................89● 3.3.1

3.5● 2.6.2 Exit Do 文／ 71
Do 文／ 68
Do 文に関するエラーとその対策／ 73

金種計算.............................................................................................................86● 3.2.1

3.4

For 文の入れ子／ 64

最大公約数.........................................................................................................83● 3.1.3

3.3● 2.5.2

身近な具体例を見てみよう........................................ 83● 3.1.1

3.2

For 文／ 61

別シートのセル参照..........................................................................................77● 2.7.1

第3章

Select Case 文／ 58

条件による繰り返し..........................................................................................68● 2.6.1

2.7● 2.4.2

回数による繰り返し..........................................................................................61● 2.5.1

2.6

ElseIf 文／ 56

日の丸マクロを実行してみよう／ 98
日の丸マクロの処理内容／ 99

検索................................................................................................................. 102● 3.7.1 「検索」マクロを使ってみよう／ 102● 3.7.2 「検索」マクロの処理内容／ 103vi

536_vba2022-book.indb 62022/11/04 11:20

第2部
第4章
4.1

飛躍のための準備 .................................................. 107
オブジェクト式............................................................................................... 108● 4.1.1● 4.1.3

4.2● 4.2.3● 4.2.5● 4.3.3● 4.4.3● 4.4.5● 4.4.7● 4.4.8● 4.5.3● 4.5.4● 4.6.2● 4.6.3● 4.6.4● 4.6.5● 4.7.3

5.1

算術演算における型変換／ 131
混合演算における留意点／ 134● 4.4.2 データ型の変換関数／ 139
対話のための関数／ 136● 4.4.4 文字列操作関数／ 141
データ判定関数／ 140● 4.4.6 Format 関数／ 144
日付関数／ 142
VBA 関数の引用マクロの作り方／ 145
VBA 関数引用の留意点／ 147● 4.5.2
ユーザー定義関数の利用法／ 148
ユーザー定義関数マクロの作り方／ 153
ユーザー定義関数の留意点／ 154

具体例（最大公約数）／ 150

ユーザー定義サブルーチンの利用法／ 157
具体例（サイコロの目）／ 158
ユーザー定義サブルーチンの作り方／ 161
デバッガの使い方／ 162
ユーザー定義サブルーチンの留意点／ 163
ローカル変数／ 165
パブリック変数／ 167● 4.7.2● 4.7.4

グローバル変数／ 166
変数の有効範囲の具体例／ 168

エラートラップ............................................................................................... 171● 4.8.1

第5章● 4.3.2● 4.3.4

変数の有効範囲............................................................................................... 165● 4.7.1

4.8

代入文における型変換／ 130
文字列の加算と連結／ 132

ユーザー定義サブルーチン............................................................................ 156● 4.6.1

4.7● 4.2.2 変数の宣言／ 122
変数宣言の強制／ 121● 4.2.4 変数宣言マクロの作り方／ 127
定数の宣言／ 125
変数宣言に関する留意点／ 128

ユーザー定義関数........................................................................................... 148● 4.5.1

4.6

オブジェクト式の具体例／ 112
留意点／ 119

VBA 関数........................................................................................................ 135● 4.4.1

4.5● 4.1.2● 4.1.4

混合演算と型変換........................................................................................... 130● 4.3.1

4.4

オブジェクト式の構成要素／ 108
オブジェクト式の作り方／ 117

変数の宣言...................................................................................................... 121● 4.2.1

4.3

応用編……105

制御命令／ 171

● 4.8.2

具体例／ 173

キー記録マクロ ..................................................... 179
キー記録マクロとその作り方......................................................................... 179● 5.1.1

キー記録マクロとは／ 179● 5.1.2

キー記録マクロの作り方／ 180vii

536_vba2022-book.indb 72022/11/04 11:20

目 次

5.2

文字修飾マクロ............................................................................................... 182● 5.2.1● 5.2.3

5.3● 5.3.3● 5.4.2

6.1● 6.1.3● 6.1.4● 6.2.2● 6.2.3● 6.2.4● 6.3.2● 6.3.3● 6.3.4

コイントスゲームの実行／ 197
コイントスゲームの処理内容／ 198
コイントスゲームの作り方／ 204
ユーザーフォームの留意点／ 208
コマンド制御マクロの実行／ 210
コマンド制御マクロの処理内容／ 211
コマンド制御マクロの作り方／ 214
ユーザーフォームの初期化における留意点／ 216
テキストボックス・マクロの実行／ 219
テキストボックス・マクロの処理内容／ 221
テキストボックスの作り方／ 224
テキストボックス・マクロの留意点／ 228

自動実行マクロとパブリック変数................................................................. 229● 6.4.1● 6.4.2● 6.4.4

マクロの所在とその実行方法／ 229● 6.4.3 自動実行マクロの実行過程／ 232
自動実行マクロの実行／ 231● 6.4.5 自動実行マクロの留意点／ 238
自動実行マクロの作り方／ 236

リストボックス............................................................................................... 240● 6.5.1● 6.5.2● 6.5.3● 6.5.4

6.6

計算マクロとその実行／ 191
計算マクロのエラーとその対策／ 195

テキストボックス........................................................................................... 219● 6.3.1

6.5

ソートマクロの処理内容／ 186

コマンドボタン制御....................................................................................... 210● 6.2.1

6.4● 5.3.2

ユーザーフォームの基本................................................................................ 197● 6.1.2

6.3

ソートマクロの実行／ 185
ソートマクロの留意点／ 189

ユーザーフォーム .................................................. 197● 6.1.1

6.2

文字修飾マクロの処理内容／ 183

計算式のキー記録マクロ................................................................................ 191● 5.4.1

第6章● 5.2.2

並べ替え（ソート）のキー記録..................................................................... 185● 5.3.1

5.4

文字修飾マクロの実行／ 182
キー記録マクロの留意点／ 184

計画づくりマクロの実行／ 240
計画づくりマクロの処理内容／ 242
リストボックスの作り方／ 245
オブジェクト名に関する留意点／ 248

コンボボックス............................................................................................... 249● 6.6.1● 6.6.2● 6.6.3

計画づくり 2 マクロの使い方／ 249
計画づくり 2 マクロの処理内容／ 251● 6.6.4
コンボボックスの作り方／ 254

コンボボックスの留意点／ 257viii

536_vba2022-book.indb 82022/11/04 11:20

第7章
7.1

応用例を見てみよう ............................................... 259
26 進数変換.................................................................................................... 259● 7.1.1● 7.1.2

7.2

暦の変換.......................................................................................................... 263● 7.2.1● 7.2.2

7.3● 7.3.2● 7.4.2● 7.5.2● 7.6.2● 7.7.2● 7.8.2● 7.9.2● 7.9.3

8.1

消耗品在庫管理マクロを動かしてみよう／ 317
消耗品在庫管理ブックの構成／ 318
消耗品在庫管理マクロを見てみよう／ 320

マクロを育てる ..................................................... 327
データ入力（勤務時間計算 Ver1）マクロ................................................... 328● 8.1.1● 8.1.2

8.2

学習塾の成績表マクロを動かしてみよう／ 311
学習塾の成績表マクロを見てみよう／ 312

消耗品在庫管理............................................................................................... 317● 7.9.1

第8章

家計簿マクロを使ってみよう／ 300
家計簿マクロの処理内容／ 302

学習塾の成績表............................................................................................... 311● 7.8.1

7.9

タイヤの見積もりマクロを使ってみよう／ 292
タイヤの見積もりマクロを見てみよう／ 292

家計簿.............................................................................................................. 299● 7.7.1

7.8

温泉選びマクロを使ってみよう／ 286
温泉選びマクロの処理内容／ 287

タイヤの見積もり........................................................................................... 292● 7.6.1

7.7

バイオリズムマクロを使ってみよう／ 275
バイオリズムマクロの処理内容／ 276

温泉選び.......................................................................................................... 286● 7.5.1

7.6

電卓マクロを使ってみよう／ 269
電卓マクロを見てみよう／ 269

バイオリズム.................................................................................................. 275● 7.4.1

7.5

暦変換マクロを使ってみよう／ 263
暦変換マクロの処理内容／ 265

電卓................................................................................................................. 269● 7.3.1

7.4

基数変換マクロを動かしてみよう／ 260
26 進数変換マクロの処理内容／ 260

勤務時間計算（Ver1）マクロの利用法／ 328● 8.1.3 データ入力（UserForm1）／ 332
ブックの構成／ 330

月初処理（勤務時間計算 Ver2）マクロ....................................................... 340● 8.2.1● 8.2.2● 8.2.3

月初処理（勤務時間計算 Ver2）マクロの利用法／ 341
自動実行マクロ、実行用マクロ／ 342● 8.2.4 月初処理（UserForm3）／ 343
メニュー（UserForm2）／ 342

ix

536_vba2022-book.indb 92022/11/04 11:20

目 次

8.3

メンバーの追加、削除（勤務時間計算 Ver3）............................................. 347● 8.3.1

メンバーの追加、削除（勤務時間計算 Ver3）マクロの使い方／ 347
UserForm2（メニュー）の変更点／ 351● 8.3.3 メンバーの追加（UserForm4）マクロの処理内容／ 352● 8.3.4 メンバーの削除（UserForm5）／ 358● 8.3.2

8.4

ブック管理（勤務時間計算 Ver4）マクロ................................................... 360● 8.4.1● 8.4.2● 8.4.3● 8.4.4

付 録

ブック管理（勤務時間計算 Ver4）マクロの利用法／ 361
当月ファイルの上書き保存（UserForm6）／ 361
翌月ファイルの新規保存（UserForm7）／ 364
ファイルの変更保存（UserForm8）／ 366

実行時エラー一覧 .................................................... 369

索引............................................................................................................................. 375x536_vba2022-book.indb 102022/11/04 11:20

第第1部

536_vba2022-book.indb 1

1 部 ■ 入門編

入門編

2022/11/04 11:20

536_vba2022-book.indb 2

2022/11/04 11:20

第1章

ようこそマクロの世界へ

第1章

ようこそマクロの世界へ

まずは、● マクロとはどんなものか● どのように実行されるのかなど、マクロに関する素朴な疑問を解消するために、簡単な例題を通してマクロの概要を明らかにしてみましょう。そこには、表計算ソフトとはまったく別な世界が広がっています。

1.1 そのための準備
1.1.1

マクロの背景（1）VBA
マクロとは何か？という質問に一言で応えるとすれば、それは VBA というプログラミング言語
でプログラムされたコンピュータプログラムといえます。
VBA とは Visual Basic for application の略で、Basic というプログラミング言語をルーツとしています。Basic は 1975 年に開発され、他の言語のようなコンパイラ方式ではなく、インタープリ
タ方式の画期的なプログラミング言語として入門者の支持を獲得しました。
インタープリタ方式とは、インタープリタ（通訳プログラム）によってソースプログラムを解3536_vba2022-book.indb 3

2022/11/04 11:20

第 1 部●入門編

釈しながら実行する方式で、コンパイラ方式のように機械語プログラムを残さない革新的な方式でした。
この Basic が、マウスの実用化に伴って Windows 用の GUI アプリケーションソフトを開発する
ための Visual Basic へと発展しました。
さらに 1993 年、Visual Basic に Excel などの Application 機能が追加された VBA（Visual Basic
For Application）が Office のマクロ言語としてリリースされ、Excel のみならず、Word や Accessなど Office 製品の共通マクロ言語として採用されました。
つ ま り、Excel の マ ク ロ と は い え、Visual Basic と い う 汎 用 的 な プ ロ グ ラ ミ ン グ 言 語 に、Application（Excel とのインターフェイス）機能を追加した本格的なプログラミング言語で開発する本格的なプログラムといえましょう。

（2）VBE
一般的なプログラミングにはテキストエディタが利用されますが、VBA では専用のテキストエ
ディタを用います。それが VBE、Visual Basic Editor の略で、マクロを開発するため専用エディタ
として以下の機能を持っています。
● 単に VBA 命令の入力や編集だけでなく、自動整形や構文チェック、自動メンバー表示などの機能が付加された専用エディタ● VBA 命令を解釈、実行するインタープリタ● VBA 命令のデバッグを支援するデバッガ

いわゆるメモ帳のような単なるテキストエディタとは大きく異なるマクロ開発のための統合プ
ラットフォームといえます。

1.1.2

マクロのためのオプション設定（1）セキュリティーレべル
表計算ソフトのマクロの形態をとるコンピュータウィルスの侵入を食い止める水際対策として、マクロを無効にすることも可能です。しかし、これでは健全なマクロも利用できないことになってしまうため、本書では、マクロを含む Excel ブックを読み込んだとき、以下のような警告メッ
セージを表示し、その都度マクロの有効可否を利用者に判断してもらうというセキュリティーレ
ベルを推奨しています。

4

536_vba2022-book.indb 42022/11/04 11:20

第 1 章 ようこそマクロの世界へ
1.2 BMI の計算

12
このような、マクロの取扱いを Excel のセキュリティーレベルとして設定するオプションが用意されています（→ 1.6.1 節）。

3（2）開発タブ4

さらに、マクロを扱う VBE を起動するためには Excel のリボンに「開発」タブを追加する必要があります（→ 1.6.2 節）
。

5
6
7
8

1.2 BMI の計算
前置きはそのくらいにして、さっそく表計算ソフトのマクロ例を見てみましょう。

1.2.1

BMI マクロの実行「サンプル」フォルダにある Smp101BMI 計算 .xlsm を読み込むと、このブックはマクロを含んでいるので、以下のような警告メッセージが表示されることがあります。この場合には、「コンテンツの有効化」ボタンをクリックして、マクロを使えるようにします。

5536_vba2022-book.indb 52022/11/04 11:20

第 1 部●入門編

このブックの Sheet1 は以下のようになっています。

体重を Kg 単位に入力する

身長を m 単位で入力する

結果が表示される

ここでは、体重（Kg）、身長（m）を入力し、BMI を計算します。これは Body Mass Index の略
で、体重と身長のバランスをチェックして太り過ぎや、逆に痩せ過ぎを判定する指標として用いられています。
このマクロを実行させるためには、体重、身長のセルにデータを入力してから、開発タブ→
コード：マクロを選択します。

すると以下のダイアログボックスが表示されます。以降、これをマクロ一覧といいます。ここでは「計算」が選択されていることを確認し、実行ボタンをクリックします。

6536_vba2022-book.indb 62022/11/04 11:20

第 1 章 ようこそマクロの世界へ
1.2 BMI の計算

1
2
3
4
5
たとえば、体重を 67Kg、身長を 1.78m として計算すると、以下のように 21.15 という結果が6表示されます。

7
8

1.2.2

BMI マクロの正体（1）VBE の起動
マクロがどのように作られているのか調べるためには、開発タブ→コード：Visual Basic をクリックします。

7

536_vba2022-book.indb 72022/11/04 11:20

第 1 部●入門編

すると現れる画面が VBE（Visual Basic Editor）です。

プロジェクト・エクスプローラ・ウィンドウ
右側ウィンドウの存在元を示す

コード・ウィンドウ
マクロの命令文を表示する

画面の右側がコード・ウィンドウで、マクロの命令文が表示されます。その左側をプロジェク
ト・エクスプローラ・ウィンドウといい、コードウィンドウの所在を示しています。つまり、マクロは Sheet1 などの通常のワークシートとは別に、標準モジュールの Module1 に格納されていることを示しています。つまり標準モジュールとは、マクロの Sub プロシージャを格納しておく
場所です。

8

536_vba2022-book.indb 82022/11/04 11:20

第 1 章 ようこそマクロの世界へ
1.2 BMI の計算（2）VBE の終了

1

なお、この VBE 画面から元のワークシートに戻るためには、VBE メニューのファイル→終了して Microsoft Excel へ戻るを選択するか、または［Alt］+［Q］キーを押します。

2

手っ取り早く、VBE のクローズボタンでも、元のワークシートに戻ることができます。

3
4

VBE のクローズボタン

567（3）標準モジュールの構成
標準モジュールの Module1 に格納されているマクロ本体について見てみましょう。

8① Sub プロシージャ
VBE 画面のコードウィンドウにある Sub から End Sub に囲まれた命令文の集まりを Sub プロシー

ジャといい、マクロを実行する単位となります。
Sub プロシージャ名 ()End Sub

ここで、Sub、End を予約語といい、他の意味に用いることはできません。

9536_vba2022-book.indb 92022/11/04 11:20

第 1 部●入門編

また、プロシージャ名は実行単位としてのマクロ名で、以下の命名規則に従って自由につけることができます。
命名規則● 半角文字（英数字）、全角文字（漢字、ひらがな、カタカナ）、記号（「_」：アンダーバー）● 先頭文字に数字、「_」は使えない。

● 長さは半角 255 文字（全角 127 文字）以下でなければならない● VBA の予約語は使えない

プロシージャ名に予約語を使うとエラーとして検出されるので、すぐに対応できます。長さも（ハイフン）、
短ければ短いほど便利ですからあまり気にならないでしょう。気になるとすれば、
「-」

（ドット）
、
「@」
（アットマーク）、「 」（スペース）などの記号が使えない点です。
「.」

なお、本書ではすべての Sub プロシージャ名に全角文字（日本語）を使用しています。
また、プロシージャ名に続くカッコの中の使い方については後述しますので、プロシージャ名にはカッコが続くものとしておいてください。
したがって、このブックには先のマクロ一覧で確認したように、
● 計算
● クリア

という 2 つの Sub プロシージャ、実行可能なマクロが含まれていることになります。

マクロの実行単位としての Sub プロシージャ

マクロの実行単位としての Sub プロシージャ

10

536_vba2022-book.indb 102022/11/04 11:20

第 1 章 ようこそマクロの世界へ
1.2 BMI の計算②ワークシートのセル

1

マクロでは、ワークシートのセルを Range という予約語で表します。
Range( セル番地 )2

例：Range("C6")……6 行目 3 列目の単独セル

3

Range("C6:G6")……C6 から G6 までのセル範囲

4

Range に続くカッコの中を引数といい、セル番地を指定します。ここでは A1 形式（→ 1.6.3 節）（ダブルクォーテーション）で囲み、単独のセルや「:」（コロン）で結んだセのセル番地を「"」

5

③変数

6

ル範囲を指定します。

マクロではワークシートのセルとは別に、変数を使うことができます。変数とはデータを格納するための器のようなもので、セルのような番地ではなく、名前で他と区別します。この名前を

7

変数名といい、先の命名規則に基づいて自由に命名することができます。このマクロで使用する
以下の 3 つの変数のように、本書においては変数名にも日本語を使用しています。
変数名

用途

体重

体重を Kg で格納する

身長

身長を m で格納する

BMI

計算結果を格納する

8④代入文
この Sub プロシージャに限らず、マクロの命令文の多くは、この代入文によって構成されます。
左辺 = 右辺
代入文とは、右辺の内容を左辺に代入する、内容を書き換えるという命令で、左辺はそれまでに持っていた内容を失うことになります。したがって、
体重 = Range("C6")11536_vba2022-book.indb 11

2022/11/04 11:20

第 1 部●入門編という代入文は、「体重」という変数に、セル C6 の内容（先の画面例では 67）を代入することになります。また同様に、
身長 = Range("E6")

では、E6 セルの内容（1.78）を変数「身長」に取り出します。

⑤算術式
さらに、代入文の右辺では以下のような算術演算子による算術演算をすることができます。

「*」は掛け算を示し、これらの演算は基本的に左から右に計算します。なお、「/」は割り算、BMI = 体重 / (身長 * 身長)では、先にカッコの中を計算するので、
BMI = 67 / (1.78 * 1.78)= 67 / 3.1687= 21.1463199…

という計算をすることになります。
最後に、Range("G6") = BMI

によっては、計算結果を G6 セルに上書きします。このセルには、21.1463199…という小数が代入されますが、これほどの小数点以下を表示する意味はありませんので、ここでは小数点以下第2 位まで表示するようセルの書式設定しています。その結果、21.15 というように、小数点以下第3 位（8）を四捨五入するという、丸め処理が行われています。

12536_vba2022-book.indb 122022/11/04 11:20