エクセルVBAのプログラムを書く場所と、動かす方法を説明していきます。
サンプルプログラムでは「セルの背景色をセットする」処理を実行してみます。
なのでプログラムを間違えても、他のエクセルファイルに影響を与えないために、すべてのエクセルファイルを閉じてください。
VBAをプログラミングする画面を表示
エクセルには、普段表示している画面とは別に、VBAのプログラミングをする画面があります。
次の手順で表示できるので、ひとつずつ順番にしていきましょう。
1.リボンの[開発]タブをクリック
まずは新規のエクセルファイルを開いてください。そして、画面上のリボンにある[開発]タブをクリックします。
[開発]タブが表示されていない人は、「VBAでプログラミングをするための前準備」を読んで表示してください。
2.左端にある[Visual Basic]をクリック
クリック後に、下の画面が表示されます。
この画面がエクセルVBAをプログラムする時に使う画面で、VBE(Visual Basic Editor)という名前です。(名前は無理に覚えなくてOKです。使っていたら自然と覚えます。)
VBAをプログラミングする紙を作成
これまでの手順で、プログラミングをする画面は表示できました。
エクセルでは新しい内容の入力をする時に、新しい紙(シート)を追加して、そこに記入していくと思います。エクセルVBAでも、シートのようにプログラムを書く新しい紙を追加します。それが標準モジュールです。
次の手順で、新しい標準モジュールを追加できます。
1.プロジェクトウインドウにあるファイル名を右クリック
シートの追加と同じように、標準モジュールはエクセルのファイルに追加します。
左上のウインドウをプロジェクトウインドウと呼びますが、ここに開いているエクセルファイルが一覧で表示されます。今回はすべてのファイルを閉じて、新しいファイルを作成して作業を進めているので、ファイル名はBook1で表示されていると思います。
エクセルファイルBook1に標準モジュールを追加するので、このVBAProject(Book1)を右クリックします。
※いくつかエクセルファイルを開いている場合は、ここでファイルの選択ミスをしないようにしましょう。右クリックして選択状態になったエクセルファイルに、標準モジュールは追加されます。
2.[挿入]→[標準モジュール]をクリック
クリック後、左上のウインドウ(プロジェクトウインドウ)に新しい標準モジュールが追加されます。右側には新しい標準モジュールが開いた状態(真っ白な紙)になっています。ここにVBAのプログラムを書いていきます。
背景色をセットするプログラムを作る
1.プログラムの処理に名前を付ける
プログラムを書く時は、プログラムの処理ごとに名前をつけます。
今回は、バックカラーをセットするプログラムなので、名前をSetBackColorにしてみます。ひとつだけルールがあり、名前の前にSubという単語を付けます。
それでは、右側の標準モジュールで、 sub SetBackColorと入力してください。
入力後、Enterキーを押してください。Enter後に自動で、subは先頭が大文字になり、SetBackColorの後ろに()、とEnd Subが自動で追加されます。
このSub SetBackColor()とEnd Subの間に、プログラムを書いていきます。
2.プログラムの中身を書く
次のように、Sub SetBackColor()とEnd Subの間にプログラムを書いてください。
セルの1行目1列目(A1セルのこと)の背景色に、青をセットするプログラムです。
1 2 3 4 5 |
Sub SetBackColor() Cells(1, 1).Interior.Color = RGB(0, 0, 255) End Sub |
左側のCells(1, 1).Interior.Colorをそのまま読むと、「セル(1,1)のインテリアのカラー」です。これをもうちょっと日本語にしてわかりやすくすると、「セル(1,1)はセル(A1)」、「インテリアは装飾」、「カラーは色」なので、「セル(A1)の装飾の色」となり、背景色を意味していることがわかります。
右側のRGB(0, 0, 255)ですが、これは光の3原色を使って色を指定する方法です。RはRedで赤、GはGreenで緑、BはBlueで靑を意味します。ここではRGB(0, 0, 255)と、3番目が255となっているので、青を表しています。
(RGBによる色に関しては、VBAカラー一覧(組み込み定数、RGB値)|色見本ありを参考にしてください。)
それよりもここで1番のポイントは、VBAでの=は、日常生活で使う=とは意味が違うことです。例えば日常生活では、1+1=2の場合、左辺の計算1+1をした結果が、右辺の2になるとなります。
VBAのプログラムでは逆で、右辺の値を左辺にセットするという意味になります。
ここでは、右辺のRGB(0, 0, 255)を左辺Cells(1, 1).Interior.Colorにセットします。もう少し日本語で言い換えると、右辺の「青」を、左辺の「セル(A1)の装飾の色」にセットするとなります。
プログラムでの=は日常生活と意味が違います。
VBAのプログラムでは右辺の値を左辺にセットするという意味になります。
左から右ではなく、右から左とおぼえましょう!
プログラムの実行方法
実行したい処理の中にカーソルをあわせます。
今回の場合は、Sub SetBackColor()とEnd Subの間をクリックすればOKです。(インターネットで見つけた他のプログラムを実行したい場合は、その処理をクリックしカーソルを合わせましょう)
その後、画面上にある右三角のボタンをクリックすると、プログラムが実行されます。
カーソルの位置があっていない場合は、次のようにどの処理を実行するか選ぶ画面が表示されます。左側で実行する処理を選んで、実行ボタンをクリックします。今は初めてのプログラムなので、SetBackColorしかないので、そのまま実行ボタンをクリックすればOKです。
今回作ったプログラムの場合は、実行後はセルA1に背景色が青になります。
おまけ(ちょっとだけプログラムを改造)
セルA1に背景色が青になるだけだと、おもしろくないと思います。ちょっとでも「VBAってすごい!できるようになりたい!」と思ってほしいので、次のように改造してください。ちょっと難しいかもしれないので、これはコピーして貼り付けるだけでOKです。
1 2 3 4 5 6 7 8 9 10 |
Sub SetBackColor() Dim i As Integer For i = 1 To 255 Cells(i, 1).Interior.Color = RGB(0, 100, i) Next End Sub |
改造後、またプログラムを実行してみましょう。さっきと同じように、Sub SetBackColor()とEnd Subの間をクリックし、画面上にある右三角のボタンをクリックしてください。実行後は、セルA1からA255の背景色が、少しずつ変化しながらセットされます。
今回For文という方法で、いくつものセルを繰り返しまとめて背景色をセットしました。別の記事でこまかく説明するので、今は「繰り返して処理を何回もしてくれる便利なワザ」くらいに認識してください。
それよりも実感してほしいのが、数行プログラムを追加しただけで、200個のセルを自動で処理した便利さ&凄さです。今回は、背景色をセットするというシンプルな内容ですが、VBAを勉強すればもっと複雑な内容も自動で処理ができるようになります。
まとめ
- VBAをプログラミングする画面(VBE)は、リボンの[開発]→[Visual Basic]で表示する
- VBAを書く紙(標準モジュール)は、シートと同じようにエクセルファイルに追加する
- プログラムを実行する時は、動かす処理にカーソルを合わせて、右三角をクリックして実行する