1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【まとめ】VBA初心者が最初に知っておきたかったこと

1
Posted at

はじめに

Excelの業務自動化をきっかけに、はじめてVBAを触ったとき、正直こう思いました。

「どこにコードを書くのかわからない」
「インデント揃ってるのに動かない」
「MsgBoxって変数じゃないの?」

PythonやJavaなど、他の言語を少しでも触ったことがある人ほど、VBAは独特に感じると思います。
この記事では、VBA初心者が最初につまずきやすいポイントを中心に、「とりあえず1本動かせる」状態になるまでを整理します。

文法を網羅する記事ではありません。
「意味は完全に理解していないけど、動いた」という感覚をゴールにしています。

VBAは何をするための言語か

VBA(Visual Basic for Applications)は、Excelを操作するための言語です。

Webアプリを作ったり、APIを叩いたりするのが主目的ではありません。
「Excelで毎日やっている作業を自動化する」ためのものです。

この前提を知らないまま触ると、
「なんでこんな書き方なんだ?」と混乱しやすくなります。

VBAはどこに書くのか

  1. VBAはセルに直接書くわけではありません
  2. Excelを開く
  3. Alt + F11 を押す
  4. VBAエディタが開く
  5. 「挿入」→「標準モジュール」

この標準モジュールにコードを書きます。

最小のVBAプログラム

まずはこれだけです。

vba
Sub Test()
    MsgBox "こんにちは"
End Sub

Sub ~ End Sub:処理のかたまり
MsgBox:メッセージを表示する命令

カーソルをコード内に置いて F5キー を押すと実行できます。
VBAはインデントで意味を表さない

Python経験者が最初にハマるポイントです。

python
if x == 1:
    print("A")
    print("B")
vba
If x = 1 Then
    MsgBox "A"
    MsgBox "B"
End If

VBAでは、インデントは意味を持ちません。
意味を決めるのは End If や Next などの終了キーワードです。

インデントはあくまで可読性のためのものです。

MsgBoxは変数ではない

vba
MsgBox "Hello"

一見すると変数名っぽく見えますが、MsgBox は VBAに最初から用意されている組み込み関数です。

Pythonでいう print() に近い存在です。

vba
Dim msg As String
msg = "Hello"
MsgBox msg

msg:自分で定義した変数
MsgBox:組み込み関数

この区別がつくと、VBAのコードが一気に読みやすくなります。

# はキーワードではない

ファイル出力でよく出てくるこの書き方。

vba
Print #fileNo, "Hello"

この # は ファイル番号を指定するための記号です。
キーワードでも変数でもありません。

vba
fileNo = FreeFile
Open filePath For Output As #fileNo

「この番号のファイルに書き込む」という意味になります。

なお、VBAのコメントは # ではなく '(シングルクォート) です。

JSONはVBAでは「ただの文字列」

VBAにはJSON型はありません。

jsonText = "{""name"": ""sample""}"

これはすべて 文字列 です。
ダブルクォートは "" と書く必要があります。

実務で「動いた」と感じやすい例

C5セルの値をファイル名にして、JSONファイルを出力する例です。

vba
Sub ExportJson()

    Dim fileName As String
    Dim filePath As String
    Dim jsonText As String
    Dim fileNo As Integer

    fileName = Range("C5").Value
    filePath = Environ("USERPROFILE") & "\Desktop\" & fileName & ".json"

    jsonText = "{""name"": """ & fileName & """}"

    fileNo = FreeFile
    Open filePath For Output As #fileNo
    Print #fileNo, jsonText
    Close #fileNo

    MsgBox "出力完了"

End Sub

「セルを読む → ファイルを作る」という流れが見えると、
VBAの役割が一気にイメージしやすくなります。

まとめ

  • VBAは Excel自動化専用の言語
  • インデントは意味を持たない
  • MsgBox は変数ではなく組み込み関数
  • `# はファイル番号や日付専用の記号
  • 完璧に理解してから書く必要はない

VBAは、正直かなり古い言語です。
ですが、Excel業務では今も現役で、「動かせるようになる」だけで武器になります。

まずはコピペで動かし、少しずつ「なぜ動くのか」を理解していくのがおすすめです。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?