第1講 Excelのセルに値を入力しよう。
第2話 プログラムを理解しよう!
前半、実行のプログラム
Private Sub CommandButton1_Click()
Range("a6") = "初めてのVisual Basic"
Cells(7, 1) = "練習1"
End Sub
から解説していきます。
Private Sub CommandButton1_Click()は実行のプログラムが始まることを示しています。
End Subは実行のプログラムが終わること示しています。
CommandButton1は実行ボタンの本当の名前です。
実行という名前は、あくまで表示上の名前で本当の名前は、CommandButton1なのです。
CommandButton1が実名で実行は愛称とか渾名だと思えばいいわけです。
だから、このプログラムは表示上の名前(つまり渾名)が実行であるCommandButton1ボタンがクリックされたときに、
実行されるプログラムです。
Range("a6")はExcelのワークシートのA6というセルを表しています。
だから、Range("a6") = "初めてのVisual Basic"はセルA6に「初めてのVisual
Basic」を入力する命令です。なお、文字を入力するときは""で囲む必要がありますが、文字でない数字を入力するときは""はいりません。
だから、セルA6に3を入力したいなら、
Range("a6") =3となります。
セルの指定の仕方は、Rangeの他にCellsを使う方法もあります。
Range("a6")と同じセルを指定するには、Cells(6, 1)とします。
Cells(6, 1)の6は6行目を意味し、1は1列目を意味します。
結局は1列目の6行目ですからA6ということになります。
ですから、Cells(7, 1) = "練習1"はA7というセルに「練習1」を入力せよという命令になるのです。
以上の説明で、実行ボタンは
A6に「初めてのVisual Basic」、
A7には「練習1」が入力されるプログラムであることがご理解できたかと思います。
次に、後半すなわち消去のプログラムの解説をします。
Private Sub CommandButton2_Click()
Rows("2:20").Select
Selection.Delete
Range("a1").Select
End Sub
前半と同じく表示上の名前消去の本当の名前は、
CommandButton2です。
1行目のRows("2:20").Selectは2行目から20行目まで選択しなさいという命令です。
Rows("2:20")が2行目から20行目までを意味し、
ドット以降のSelectが選択を意味しています。
2行目のSelection.Deleteは選択したものを削除する命令です。
もし削除でなく消去をさせたいなら、
Selection.ClearContentsとなります。
前にも説明した通り、
私のサイトに載っている魔方陣のプログラムでは、
ほとんどが削除であるDeleteを使っています。
行数を20000行ぐらい指定するとき、
処理速度がかなり違ってしまうからです。
Delete(削除)の方なら一瞬ですが、
ClearContents(消去)の方は結構時間がかかります。
最後の行のRange("a1").SelectはA1を選択する命令です。
これは別になくてもいいのですが、
これがないと削除された後Rows("2:20").Selectがまだ生きていて、
2行目から20行目までが選択状態になっていて見ずらいので、
いれてあるのです。
だから、消去ボタンを押すとカーソルはA1に来るようになっています。
それでは皆さん、Range("a6")やCells(7, 1) 等の数字やアルファベットを別のものにしたり、
右辺の内容を変えて実行ボタンを押してみましょう。
あるいは、消去のRange("a1").Selectを削除するとどのようになるかなどを実験してみましょう。
最後に、プログラム記述上の注意をしましょう。
Private Sub CommandButton1_Click()
Range("a6") = "初めてのVisual Basic"
Cells(7, 1) = "練習1"
End Sub
は、
Private Sub CommandButton1_Click()
Range("a6") = "初めてのVisual Basic"
Cells(7, 1) = "練習1"
End Sub
と記述しても、影響はまったくありません。
あるいは、
数式をa=1と書いても、
a = 1と書いても同じです。
スペースはプログラムに影響を与えないのです。
しかし、
Private Sub CommandButton1_Click()
Range("a6") = "初めてのVisual Basic"
Cells(7, 1) = "練習1"
End Sub
のように段組をしてプログラムを記述するように習慣づけましょう。
このように書くと、
Range("a6") = "初めてのVisual Basic"
Cells(7, 1) = "練習1"
の部分がプログラム本体であることが見やすくなります。
とにかく、意味の固まりごとに段組をする習慣をつけて欲しいのです。
後にif文やfor文などを勉強しますが、
このときに段組をしておくと、
どこまでがif文やfor文の内容なのか一目でわかります。
段組にはTabキーを使うと便利です。
ワードと同じく自動段組になりますから、
それほど煩わしい作業ではありません。
また、a=1と書くより、a = 1とかく方が見やすいのですが、
こちらの方は、Enterキーを押すとVisual Basic方で自動的にやってくれますので、
a=1で問題ありません。