🌄

初心者向け VBA の学習リンク

2024/04/11に公開

VBA の始め方

初めて VBA の学習に取り組んでみようとされている方がいましたら、下記の書籍を読むと良いと思います。

  • FOM 出版さんのよくわかるシリーズ

https://www.fom.fujitsu.com/goods/lp/excel_macro/index.html?details-2308
自分が持っているので紹介しました。
このシリーズはわかりやすいので良いと思います。

  • VBA の資格に興味があるなら、公式テキストも必要ですね。

https://vbae.odyssey-com.co.jp/study/textsearch.html
Excel VBA スタンダードに合格しているので紹介しました。
受験するなら読んだほうが良いと思います。


参考サイト

インターネットで学習をするなら下記のサイトがおすすめ。

個人的にイチ押しサイト 3 選。

  1. VBA の神様のようなお方です。マクロの記録で出てきたコードをもとに不要な記述の説明などもされているので、マクロの記録からの脱却にもうってつけです。
    Excel 関数の知識も得られます(VBA だけではなく、Excel 関数の知識もあった方が絶対に良いです)。

http://officetanaka.net/

  1. 初心者から上級者まで幅広くカバーしています。
    特に、変数を日本語で書いていいんだと思わせてくれるのでぜひ読んでみてください。
    普通に日本語を使うといいよ。
    わざわざ小難しい英語に翻訳しなくていいし、ローマ字で書かなくていいよ。本当に。
    以下、引用したコードです。

    If 収縮期血圧 >= 140 Or 拡張期血圧 >= 90 Then
        isいずれかの精密検査に該当 = True
        Call 精密検査の案内用紙を出力する("高血圧")
    End If
    

    高血圧の条件が、英語で書かれるよりよっぽどよくわかる素晴らしいコードだと思います。

https://www.limecode.jp/entry/guideline/nihongo-variable
https://www.limecode.jp/

  1. VBA の考察など、とても丁寧に説明されていて大変勉強になります。
    覚えておいて損はない知識が豊富なのでぜひ読んでみてください。
    「Set Obj = Nothing は必要か」など面白いですよ。

https://thom.hateblo.jp/entry/2015/12/20/135035
https://thom.hateblo.jp/

3 つ紹介しました。
読み物としてもどれも読みごたえがあって面白いので、VBA にそこまで興味がないという方もぜひどうぞ!

おしまい。


Tips

おまけ。

  1. セキュリティに注意すること
    VBA を使用するにあたり、トラストセンターの設定は以下で問題ありません。

    • 警告して、VBA マクロを無効にする
      マクロの設定
  2. メッセージボックスでマクロの実行結果の表示は要らないです
    「完了しました」っていうメッセージの表示について、
    RPA で自動化を考えているなら不要です。
    PAD の場合、アクションを使ってマクロを実行するとマクロが完了するまで次のアクションへ進めないので、メッセージボックスが出た時点で詰みます。
    回避するためには、マウスやショートカットキーを駆使してマクロを実行させ、
    → メッセージボックスの要素が出るまで待機するアクションを使い、
    → メッセージボックスのボタンをクリックする。
    という感じで作らないといけないので、とても残念なフローが出来上がります。

  3. コードの設定は、「変数の宣言を強制する」をオンにするのは必須です

    • 変数の宣言を強制する
      オン

http://officetanaka.net/excel/vba/beginner/11.htm

  1. 変数の宣言を最初にまとめて記述する必要はありません
    使用する直前で宣言したほうが良いです。

https://thom.hateblo.jp/entry/2016/12/12/223708

  1. 宣言のしかた

    次のステートメントでは、変数 intX、intY、intZ が Integer 型として宣言されています。

    Dim intX As Integer, intY As Integer, intZ As Integer
    

    次のステートメントでは、intX と intY が Variant 型として宣言され、intZ のみが Integer 型として宣言されています。

    Dim intX, intY, intZ As Integer
    

https://learn.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/declaring-variables

VB.NET の場合は、i, j, k は Integer 型、l, m は Long 型、x, y は Single 型になります。

Dim i, j, k As Integer
Dim l, m As Long, x, y As Single

https://learn.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/variables/variable-declaration

  1. VBA を安定動作させるには
    「無駄な Active/Select をしない」「余計なことはしない」他

http://officetanaka.net/excel/vba/speed/
https://www.limecode.jp/entry/syntax/rangecopy-pastevalues

  1. 条件式の書き方
    C# 本からの引用ですが、ほかの言語でも考え方はだいたい一緒なので紹介します。[1]

    1. bool 型の変数を「==」で比較しない
      (VBA の場合は Boolean 型の変数を 「=」で比較しない)

      If flag = True Then
      If flag = False Then
      

      単に冗長という理由だけではなく、あまり望ましい表現とは言えないので書かない方が良いです。
      flagと書けばで十分です。 反対のときはNot flagと表すべきです。

      🔴
      If flag Then
      If Not flag Then
      
    2. 「10 == i」という書き方
      (VBA の場合は「10 = i」)

      If 10 = i Then
      

      一見して特異な式を表す必要はありません(特別な意図があるのではないかと勘繰られてしまうため、むしろ「読みにくいコード」となります)。

      🔴
      If i = 10 Then
      
脚注
  1. 山田 祥寛.独習 C# 第 5 版.翔泳社,2022,4.1.1. ↩︎

Discussion