PCガジェットはいつでも安いAmazonで!

【まずはここから】標準モジュールにVBAを書こう

スタッフ厳選!日本HP おすすめパソコン

icon icon

VBAゼロからシリーズです。全体はこちら。

あわせて読みたい
プログラマーの国家資格を持つ筆者が教えるVBAの独学ロードマップ はじめに エクセルVBAはエクセルのプログラミング言語です。 使えると様々なエクセル作業を自動化できます。 今回はその独学のノウハウをプログラマーの国家資格である...
目次

VBAを使う準備

まずVBAとは、簡単に言うとエクセルで使うプログラミング言語です。

エクセルで色々な関数を使うというのはご存じだと思いますが、それよりもっと複雑にデータを制御できる機能です。

早速VBAを使えるようにしましょう。

まずエクセルのタブに開発タブを表示させます。

「エクセルの開発タブを表示する方法」

Office Hack. “エクセルの開発タブを表示する方法”. Office Hack. 2019-12-09. https://office-hack.com/excel/development-tab/, (参照2021-12-06)

このページを参考に開発タブを表示してください。

開発タブが表示されたら、開発タブで「Visual Basic」をクリックします。

Alt+F11でもよいです。

表示された画面で「挿入」→「標準モジュール」をクリック。

するとコードを入力する画面になります。

そこにプログラムを書いていくことになります。

今後の方針(プログラミングに必要な要素)

すぐにプログラムを書きたいところですが、少し待ってください

これからどんな方針でプログラミングを学んでいこうかという話をします。

プログラミングに必要な要素は大きく分けて二つです。

文法」と「アルゴリズム」がプログラミングには必要です。

文法」とは、条件分岐の時はIfと書くとか、繰り返すときはForと書くとか、変数とは数値を記録する入れ物とか、配列でたくさんの数値を管理するとか、いわゆるプログラミングの入門書に書かれている基礎の基礎です。

英語で言うと「名詞」はこれ、とか「疑問文」はこういう語順で書く、とかそういう文章の構成要素に関する法則です。

これは重要なのですが、これだけではプログラムになりません

データの処理の手順を考える必要があります

このデータを小さい順に3件抽出して、足し合わせる。

そのあと大きいデータを2件抽出して、足してあった合計値に掛け算する。

こういう処理の手順が必要です。

これが「アルゴリズム」です。

「アルゴリズム」をプログラミング言語の「文法」に沿って記述したものがプログラムです。

ちなみに「文法」の違いがプログラミング言語の違いです。PythonもVBAも「アルゴリズム」が一致していれば同じような結果を返します。

なので「アルゴリズム」を考えることができれば、プログラミング言語が変わっても対応しやすくなります。

必要な要素の片方が作り出せるようになれば、あとは命令文の書き方を覚えることでプログラミングができるからです。

アルゴリズムはその都度オーダーメイド

話を戻します。

文法は入門書を読んでいれば何とかなります。

しかしアルゴリズムはそうはいきません。

データの処理の手順、すなわちアルゴリズムはオーダーメイドなのです。

その都度やりたい処理に合わせて手順を考える必要があります。

ここがある程度色々書いてみないと身につかないという部分なのです。

そうはいっても業務レベルのアルゴリズムをいきなり考えるというのは無茶です。

それに基本的なアルゴリズムはもうある程度研究されていて、自分で考えだす必要がありません。

ただしそれを学ぶことは基礎力の底上げにつながります。

また結局自分がやりたい処理をノーヒントで思いつくというのはあまりなくて、やりたいことが出てくるたびに、誰かが考えたプログラムを調べて、その都度ストックしていくことで自分の引き出しを増やしていくことになります

絵の練習と一緒です。

ノーヒントで複雑なものを、実物を見ずに記憶を頼りに描けるというのは初心者には難しいですよね。

最初は基本的なプログラムを書いてみて、雰囲気を知ったほうがいいと思います。

エクセルと連携させてVBAを解説

アルゴリズムと文法が無理なく学べる例題はないものかと考えたのですが、やっているうちに初心者を脱することを保証できるような例題というのは残念ながら私の頭では思いつきませんでした。

一般的には文法を学ぶついでに簡単な例題を解いて基本を身に着けるルートを歩むのですが、それを踏襲してそこに少し付け足すことにします。

結局エクセルのスキルを上げたいという目的のために解説するわけですし、エクセルの関数をVBAで再現するというのはどうかと考えました。

エクセルの勉強にもなって都合がよいと思いました。

エクセルの関数にもIf関数があったり、オートフィルで自動計算(繰り返し処理)があったりと、プログラミング的な要素を含んでいるんですよね。

プログラミング的に関数を使うというシチュエーションもありそうですしやっておいてもいいのではないかと考えました。

そこにちょこちょことアルゴリズムの例題を足していく感じです。

まあこれでアルゴリズムを自分で考えだすレベルになるかというと微妙ですが、「初心者」が「初心者+」になるくらいにはなるかもしれません。

というわけで当分の間はエクセルの関数と連携させてVBAを解説していきます。

VBAで足し算

やっとVBAの解説になりました。

とりあえず最初の例題として足し算をしてみましょう。

エクセルで普通に二つの値を足すやり方は次のようになります。

B2セルに5、B3セルに2が入力されています。

B4セルを選択して、関数入力欄にこの二つの値を足す処理を書くと

=B2+B3

ですね。

答えは7です。

これをVBAでやってみましょう。

コード入力欄に以下のように入力します。

Sub sum()
    Range("C4").Value = Range("B2").Value + Range("B3").Value
End Sub

そしてコード入力欄の上のほうにある緑の三角マークをクリックします。F5でもよいです。

すると

C4セルに足し算の結果が表示されます。

コード解説

Sub sum()

End Sub

この部分に処理を書きます。

Subで始まり、End Subで終わります。

Subの後につけるsum()というのは処理の名前です。

名前がsumでそのあとに()をつけると覚えましょう。

sumはgoukeiとかtasizanとかでもよいです。

そのあとに()をつけます。

これはおまじないだと思ってください。()の中に何かを入れるのはもっとずっと先の話です。

Range("C4").Value = Range("B2").Value + Range("B3").Value

これが処理の本体です。

なんとなく想像がつくと思いますが、

Range(“C4”).Value

でセルC4の値を、

Range(“B2”).Value

でセルB2の値を取得しています。

日本語に直すと

C4の値 は B2の値 足す B3の値

ということをやっています。

C4の値は」の「」が「=」です。

足す」が「+」です。

の値」というのが「.Value」です。「」が「.」すなわちドットです。

C4」を取得するための命令が「Range()」です。

“C4”」と書いてください。「C4」と書くと動きません。「””」で囲むのが大事です。

言語の仕様なので割り切ってください。

=」を書くと「=」の右側の計算結果を左側の値に格納します。

なんとなくわかりましたか?

とりあえず最初はこんな感じです。

保存するときはマクロ有効ブック形式で

最後に注意なのですが、保存するときはエクセルのブックの保存方式で「ファイルの種類」→「マクロ有効ブック(*.xlsm)」を選択してください。

普通の形式で保存するとVBAが保存されません。

まとめ

今回はプログラミングに必要なものは何かということと、実際にVBAを使って簡単な足し算をしてみるという内容でした。

これから道のりは長いですが、少しずつ進めていきたいと思います。

目次