VBA10大躓きポイント(初心者が躓きやすいポイント)
今まで多くの人のVBA学習のお手伝いをしてきましたが、共通するVBA学習での躓きポイントがいくつかあります。
ここでは多くの人が躓くVBAの10大躓きポイントを解説していきます。
10大と言っても特に統計をとった訳ではなく、経験からの感覚的なものです。
ほとんどの内容について既存の解説ページがありますので、補足説明をしつつ既存ページへのリンクを掲載しています。
VBA10大躓きポイントのページ内目次
✅どこでインデントすれば良い
✅カンマ「,」とピリオド「.」と半角スペース「 」
✅「:=」ってどこで使う
✅「""」が多すぎて
✅暗黙の型変換とは
✅用語が難しい(オブジェクト、プロパティ、メソッド)
✅配列とは
✅ByValとByRef
✅VBAを書く場所
変数とは
変数と定数のVBAの文法
第12回.変数宣言のDimとデータ型|VBA入門
変数の命名と考え方
変数とプロシージャーの命名について|VBA技術解説
オブジェクト変数
第52回.オブジェクト変数とSetステートメント|VBA入門
変数のメモリアドレス
興味があれば読んでみてください。
VBAにおける変数のメモリアドレスについて|VBA技術解説
どこでインデントすれば良い
こうしなくてはダメだという規則があるわけではありませんが・・・
とはいえ、一般的に推奨されるインデントの基本は押さえておきましょう。
VBAでの推奨インデント
VBE(Visual Basic Editor)でのインデント操作
| ショートカット キー | 説明 |
| Tab | インデント |
| Shift + Tab | インデントを戻す |
カンマ「,」とピリオド「.」と半角スペース「 」
VBAにおけるピリオドとカンマとスペースの使い方|VBA技術解説
ピリオドはくっつけるもの
カンマは区切るもの
スペースは単語の区切り
「:=」ってどこで使う
Pythonでは、「セイウチ演算子」「ウォルラス演算子」などと呼ばれています。
VBAでは特定の呼び方はなく、
「コロンイコール」
と呼んでいる人が多いと思います。
名前付き引数以外では「:=」は一切使いません。
第25回.名前付き引数について|VBA入門
「"」が多すぎて
・文字列として「"」を記述するときは、「"」を連続2つで記述します
フォルダ指定の文字列作成で良く書かれるVBA
Dim sPath As String, sSubDir As String
sSubDir = "DATA"
sPath = ThisWorkbook.Path & "\" & sSubDir & "sampla.xlsx"
この"\"はフォルダの中のサブフォルダを指定する場合のフォルダ連結の文字列としての"\"です。
& は、VBAの文字列連結の演算子の& になります。
「\」も「&」も記号ですが、文字列として扱うものは"の中に入れますが、演算子は"で囲んだりせずにそのまま書きます。
セルに数式を入れるVBA
=IF(A2="","",A2*2)
この数式を入れるVBAです。
Range("B2").Formula = "=IF(A2="""","""",A2*2)"
数式には「""」という記述は良く出てきます。
「"」が使われている文字列を扱うときは、
メモ帳等で、「"」を「""」に置換するのが一番手っ取り早いです。
セルの数式をコピーしてメモ帳に貼り付け、
「"」を「""」に置換した後にVBAで""の中に貼り付けます。


暗黙の型変換とは
この、型変換がいつどのように行われるかを全てを把握するには、かなり多くのことを覚える必要があります。
そのため、意図しない場面で型変換が行われてしまい、意図しない結果になってしまうことがあります。
型変換できるものは自動で型変換します。
型変換できないものはエラーとなります。
まずはこの基本を覚えうえで以下の記事をお読みください。。
第12回.変数宣言のDimとデータ型|VBA入門
代入の場合
この時、代入先の型に変換できない場合に型エラーとなります。
そのデータ型が格納できる数値範囲を超えている場合もエラーになります。
例えばIntegerは-32,768 ~ 32,767の範囲ですので、この範囲外の数値を入れるとエラーになります。
演算の中では
算術演算子であれば、数値変換後に計算されます。
ただし、
+演算子は、足し算の演算子であると同時に文字列結合の演算子でもあるので、
2項とも数値なら足し算、片方でも文字列なら文字列結合が行われます。
(文字列結合で+を使うのはあまり推奨しません。)
データ型変換関数一覧
| 関数名 | 戻り値の種類 | 引数の範囲 |
| CBool関数 | Boolean | 任意の有効な文字列式または数式を指定します。 |
| CByte関数 | Byte | 0 から 255。 |
| CCur関数 | Currency | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807。 |
| CDate関数 | Date | 任意の有効な日付式。 |
| CDbl関数 | Double | 負の値の場合は -1.79769313486231E308 ~ -4.94065645841247E-324 正の値の場合は4.94065645841247E-324 ~ 1.79769313486232E308。 |
| CDec関数 | Decimal | ゼロスケールの値 (小数部分がない値) の場合は 79,228,162,514,264,337,593,543,950,335 です。 小数点以下が 28 桁の値の場合は 7.9228162514264337593543950335 です。 0 以外で可能な最小値は 0.0000000000000000000000000001 です。 |
| CInt関数 | Integer | -32,768 から 32,767。 小数点以下は丸められます。 |
| CLng関数 | Long | -2,147,483,648 から 2,147,483,647。 小数点以下は丸められます。 |
| CLngLng関数 | LongLong | -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807。 小数点以下は丸められます (64 ビット プラットフォームのみで有効)。 |
| CLngPtr関数 | LongPtr | 32 ビットのシステムでは -2,147,483,648 ~ 2,147,483,647 64 ビットのシステムでは -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807。 32 ビットと 64 ビットのどちらのシステムでも、小数部分は丸められます。 |
| CSng関数 | Single | 負の値の場合は -3.402823E38 ~ -1.401298E-45 正の値の場合は 1.401298E-45 ~ 3.402823E38。 |
| CStr関数 | String | CStr の戻り値は、引数に依存します。 |
| CVar関数 | Variant | 数値の場合はDoubleと同じ範囲です。 数値以外の場合はStringと同じ範囲です。 |
用語が難しい(オブジェクト、プロパティ、メソッド)
しかし、用語を覚えたからと言ってVBAが書けるようになる訳ではありません。
用語を覚える過程で、その用語が意味する重要な概念を少しずつ理解していきましょう。
配列とは
一度に全てを覚えようとすると大変なので、必要に応じて少しずつ覚えて使える範囲を広げていけばよいでしょう。
ByValとByRef
プロシージャーの引数|VBA入門
以下の文章の意味が理解できればOKです。
ByVal:値渡し
つまり、値渡しでは、呼出し先で引数の値を変更しても、呼出し元の引数は変更されません。
ByRef:参照渡し
つまり、参照渡しでは、呼び出し先で引数の値を変更すると、呼び出し元の引数も変更されます。
VBAを書く場所
最初は全て標準モジュールに書くものだと考えて差し支えありません。
いずれVBA学習が進むと、以下の全てのモジュールが扱えるようになります。
シートモジュール
ブックモジュール
フォームモジュール
クラスモジュール
同じテーマ「マクロVBA技術解説」の記事
印刷範囲の設定・印刷範囲のクリア
VBAの省略可能な記述について
VBAのVariant型について
VBAのインデントについて
VBAの演算子まとめ(演算子の優先順位)
列幅不足による###表示や指数表示を判定する
VBA10大躓きポイント(初心者が躓きやすいポイント)
Excel VBAとは?マクロとの違いやメリット・デメリットを初心者向けに解説
『演算子 + オペランド』から始めるVBA学習
PCの固有情報の取得(ユーザー名、コンピューター名等々)
ウィンドウ設定を引き継いで新規ウィンドウを作成するVBA
新着記事NEW ・・・新着記事一覧を見る
最長連続出現数(ランレングス)の算出|エクセル練習問題(2025-11-15)
SQL基礎問題11:連続期間の開始月と終了月を抽出|SQL入門(2025-11-14)
セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBA技術解説
- VBA10大躓きポイント(初心者が躓きやすいポイント)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.

