Excel VBAは、なんか覚えることがあって色々大変そうだな…
テキスト買ったものの何から覚えていいのか分からない…
そんなあなたに朗報です!コードはすべてを覚える必要はないです!
最初のうちは、実務でよく使うコードだけを押さえることで、
作業時間は確実に短縮できます。
この記事では、VBA初心者でも
「これだけ覚えれば仕事が一気に楽になる」
実務向けコードを5つに厳選して紹介します。
① Cellsとは?
Cellsは、Excelのセルを「行番号・列番号」で指定する書き方です。
例えば、A1セルは次のように書きます。
Cells(1, 1).Value = "テスト"
最初は
「A1って書いた方が分かりやすくない?」
と思うかもしれません。
ですが、VBAでは同じ処理を繰り返すことが多く、
その時にCellsは必須になります。
② For ~ Nextは?
For~Nextは、同じ処理を繰り返すための構文です。
For i = 2 To 11
IF Cells(i,1).Value = "リンゴ" Then
Cells(i, 2).Value = 350
END IF
Next i
このコードは、A2~A11の中にリンゴという文字列があったら、
B列に単価350を自動入力します。
Excelデータを見ながら、もう1つのExcelデータに入力しているそこのあなた
For文を覚えた瞬間で解決できます。
③ If ~ Then ~ End If
If文は、条件によって処理を変えるためのコードです。
If Cells(1, 1).Value = "" Then
MsgBox "未入力です"
Exit Sub
End If
■IF ~END IF 解説
A1セルにデータが無ければ、「未入力です」というメッセージを
出して未入力チェックを行うという意味です。
例えば、必ずA1にデータを入力していなければならないといったときに「エラーチェック」
したいときに良く使うコードです。
VBAではIf文は避けて通れません。
④ 最終行を取得する定番コード
ExcelのVBAでほぼ必ず使われるのが、最終行を取得するこのコードです。
Cells(Rows.Count, 1).End(xlUp).Row
この1行で、
「A列の一番下に入力されている行番号」を取得できます。
データ件数が毎回変わるExcelでは、
このコードを使えるかどうかで自動化のレベルが大きく変わります。
先ほどのリンゴの単価を入力するコードを使ってサンプルコードを作ってみましょう
Dim r i Long
r = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To r
IF Cells(i,1).Value = "リンゴ" Then
Cells(i, 2).Value = 350
END IF
Next i
このコードの意味は、以下内容の時に良く使われます。
・ データが行数が変動する
・ 何行ある分からない。
・ ユーザー毎に使用しているデータ量が違う
最終行取得コード解説
A2~A列の最終行の中にリンゴという文字列があったら、
B列に単価350を自動入力します。
実務ではA列に何行あるか分からない時が多いので、
かなりの場面で使用します。
⑤ FileDialog|ファイル選択を自動化する
FileDialogを使うと、ユーザーにファイルを選ばせることができます。
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Show
ユーザーにファイルを選択してもらいたいときに使用します。
ファイルダイアログが使えるようになると一気にマクロで出来ることが広がります。
・ 開いているExcelとcsvファイルなどのデータ照合が出来る
・ ファイルのパスが取得できる
・ ファイルの複数選択が出来るので、一気にファイルの更新が出来る etc…
まとめ|VBAは全部覚えなくていい
VBAは難しそうに見えますが、
実務でよく使うコードは限られています。
今回紹介した5つのコードを押さえるだけで、
毎日の「同じ作業にかかる時間」は確実に減らせます。
まずは本日紹介した5つのコード
① Cells
② For Next
③ If ~ Then ~ End If
④ Cells(Rows.Count, 1).End(xlUp).Row
⑤ FileDialog
まずは、① ~ ⑤ くらいが理解できると今やっている手入力の作業が
楽になるのではないでしょうか。
まずは自分の使用しているExcelに実装して、テスト運用していきましょう



コメント