Excelではマクロという機能が使えます。

このマクロというのは作業を自動化できるものです。

そしてExcelのマクロは、VBAというプログラミング言語によって作ることができます。

マクロはマウス操作の記録などでも作ることができますが、プログラミングの方が正確に複雑な処理を行うことができます。

今回はその方法についてまとめていきたいと思います。


Excelでマクロを使うには

エクセルでマクロを使うには初期設定をする必要があります。

まず最初にマクロを使いたいエクセルのファイルの拡張子の名前を「.xlsm」にします

どこから使える

マクロはエクセルの
表示>マクロ
のところにあります。
ここにマクロ名を入力すると作成ボタンが押せるようになり、マクロを作成することができます。

これだけでも十分なのですが、開発タブを有効にしておくとさらにVBAを使いやすくなります。


VBAの書き方

VBAでは関数を書いて、その中に処理を書きます。
それぞれの書き方についてまとめておきます。

関数

関数には2種類あり、戻り値がないSubと戻り値があるFunctionがあります。
戻り値とは関数内で処理した結果を返す数値のことです。

Sub

Subでは以下のように書きます。

Sub 関数名(引数)
処理
End Sub

引数は関数に与える変数のことで
文字型なら

変数名 As String

のように書いたり、整数型と並べて

変数名 As String,変数名 As Integer

のように複数書くこともできます。

Function

Functionでは以下のように書きます。

Function 関数名(引数)
処理
関数名=戻り値
End Function

関数名=戻り値と書くことで処理の結果を返すことができます。
例えば関数名がaddで引数が整数のa,bであり、その和を返す関数であるなら

add=a+b

のように書きます。

If文

条件分岐です。
書き方は

If 条件式 Then
真のときの処理
Else
偽の時の処理
End If

のように書きます。
条件式は例えば変数aが5より大きいかを判別するには
a>5 
と書き、aが5より大きいならば真の処理が行われ、そうでないのならば偽の処理が行われます。

For文

繰り返しです。
For i=0 To n
処理
Next i

のように書きます。
この場合ではiがnになるまで処理が行われます。
iが0から始まっているので、n+1回処理が実行されることになります。

演算子

If文を使うときには条件式が必要となりますが、条件式を書くには演算子を知っておく必要があります。

比較演算子

比較演算子は数値を比べるためのものです。
比較演算子には以下のようなものがあります。
演算子意味
>,<より大きい、小さい
<=.>=以上、以下
等しい
<>等しくない
間違えやすいのは等しいかどうかのところです。
c言語では等しいのは「==」ですし、等しくないのは「!=」なのでVBAではこの書き方だということを覚えておきましょう。

論理演算子

論理演算子では複数の条件式をつなぐことができます。
よく使うものには以下の2つがあります。
比較演算子書き方意味
論理和Andかつ
論理積Orまたは

変数の宣言

変数を使うときには宣言する必要があります。
宣言の方法は以下の通りです。
Dim 変数名 As 変数型
例えば整数を使いたいときには変数名をaとすると

Dim a As Integer

のように書きます。

しかし変数の宣言は省略することもできます。
けれどもしておいた方がわかりやすいと思うのでお勧めです。

また後ろの「As 変数型」は省略することもでき、省略すると「Variant型」となります。
Variant型ではどんな型でも入れることができます。
また「Redim」を使うことで再定義することもできます。
Variant型のものを整数型に固定したいときや配列の宣言の要素数に変数を使いたい時などにRedimが使えるので便利です。

配列

配列は複数の変数が1つにまとまったものです。
配列を使うには

Dim 変数名(要素数,要素数,…) As 変数型
または
Dim 変数名() As 変数型

のように書きます。
要素数を指定しないことで配列の長さを可変長にすることができます。

セルの数値を使う

セルの数値を使うにはCells関数を使うのが一番わかりやすいです。
Cells関数では以下のように書いて使います。
  Cells(行番号,列番号).Value
例えば変数にC2のセルの値を入れるには
変数=Cells(2,3).Value
と書き、セルに変数を入れるにはその逆にすればよいだけです。
このようにしてセルに数値を入れたり、セルから数値を取り出すことができます。

コメントアウト

プログラムを書いているとどこに何を書いているかわかりにくくなりますよね。
そのためコメントアウトで説明を書いておくとわかりやすいです。
コメントアウトは
「'」を書くとその行に説明を書くことができます。
例えば

'cにaとbの和を代入する
c=a+b

のような感じです。
複数行はc言語と違って用意されていないので、一行ずつ「'」を打つ必要があります。
一応「編集」からまとめて「'」を打てるみたいです。

まとめ

エクセルでVBAを使う上で基本的なことをまとめました。
言語によって細かいところが違うのでいろいろ忘れてしまったりしますよね。
マクロを使いこなしてエクセルの作業を効率化していきましょう。



開発タブを有効にする

開発タブを有効にするには
ファイル>オプション>リボンのユーザー設定>開発 にチェック
をしてOKボタンを押すことでできます。

開発タブを有効にすると以下のようになり、VBA(左側にあるVisual Basic)を使えるようになります。