この教材の特徴。 すべてのプログラムがブラウザの中で実行できます。 Excel も VBA も、インストールは要りません。 プログラムを書き換えて動かし、ワークシートがどう変わるかをその場で確かめられます (この教材のために VBA の処理系を JavaScript で書きました。 対応している構文は早見表に明記してあります)。
Sub Macro1()
Dim i As Integer
Dim N As Integer
Dim s As Integer
N = 10
s = 0
For i = 1 To N
s = s + i
Cells(i, 1).Value = i
Cells(i, 2).Value = s
Next i
Cells(1, 4).Value = "合計"
Cells(2, 4).Value = s
End Sub
N = 10 を N = 20 に変えて、もう一度「実行する」を押してみてください。
Ctrl+Enter でも実行できます。
プログラミングは「文法を覚える」ことではありません。 やりたいことを、機械が実行できる手順に分解することです。 この授業では、Excel の表計算の上でそれを練習します。 表の上で結果が目に見えるので、自分の書いた手順が何をしたのかが分かりやすいからです。
この教材は、2018〜2025 年に使われた講義資料 「情報学入門(VBA)100〜205」全 22 ファイル(計約 513 枚)をもとに、 内容の誤りを直し、足りない説明を補って作り直したものです。 各章の末尾にどこを直しどこを足したかの一覧を置いてあります。
資料全体を通して見つかった主なものを、先に挙げておきます。
Dim I, S, SS As Integer(資料 165) ──
VBA ではこう書くと最後の SS だけが Integer 型になり、
I と S は Variant 型になります。1 つずつ As を書く必要があります。
この教材の処理系は、この書き方をすると警告を出しますSub hanoi(n As Intger, ...)(資料 180・185) ──
Integer の綴りが Intger になっていますCells(i,1) を実行」)──
Excel の行・列は 1 から始まるので、Cells(0,1) は実行時エラーになりますページの中で動いているのは、この授業のために書いた VBA の処理系です。 Excel そのものではないので、次の点が本物と違います。
Worksheets("Sheet2") と書いても同じシートを指します)Formula に数式を入れても計算しません。
入れた文字列がそのまま入ります(第 2 章でこの違いを扱います)MsgBox はダイアログではなく、下の欄に出力されますRnd は毎回同じ順番の値を返します(結果が再現できるように)対応している構文・関数の一覧はVBA 早見表にあります。 本物の Excel で動かすときの注意もそこに書きました。
| やり方 | |
|---|---|
| VBA を開く | Alt+F11(Mac は Option+F11) |
| マクロを実行 | VBA の画面で F5/Excel 側では「表示」→「マクロ」→「マクロの表示」 |
| 1 行ずつ実行 | F8(これが最も勉強になります) |
| 保存 | 「Excel マクロ有効ブック(.xlsm)」を選ぶ。 通常の .xlsx で保存するとマクロが消えます |
| 最初にやること | VBA の画面で「ツール」→「オプション」→
「変数の宣言を強制する」にチェック(Option Explicit が自動で入ります) |
.xlsm で保存することと、変数の宣言を強制すること。 この 2 つを最初にやっておくと、あとで困りません。 前者を忘れると書いたプログラムが消え、後者を忘れると 打ち間違えた変数名が新しい変数として黙って作られ、原因の分からない不具合になります。