エクセルVBA超入門!プログラミングと変数の基礎中の基礎


Study

ThePixelman / Pixabay


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

この記事をご覧になられているということはVBAに少なからず興味がおありのことと思います。

多くの人がVBAを使えるようになると日本の生産性は確実にそして劇的に上がるはず…!それを目指して鋭意記事を書いてまいります。

さて、こちらの記事ではプログラムを書く前までの準備を紹介しました。

エクセルVBA超入門!たった10分でスタート地点に立つための方法
エクセルVBA…まず何をしたら良いかわからない…!という声をよく耳にします。今回はVBAプログラミングをいざ書き始める直前の状態を目標に、エクセルVBAの最低限のセッティングの仕方についてお伝えします。

今回は、それに引き続きましてそのまんまやってVBAに唾をつけていこうシリーズの第2回となります(そんなシリーズだったか?)。

実際に簡単なプログラムを組んで実行をするところまでやってみて、VBAプログラミングの一通りの流れ基本的なプログラムの書き方について理解いただくのを目標にします。

書いてある通りに進めて頂ければOK!

はっきり言って題材は面白くとも何ともないプログラムなので、その点だけは我慢してお付き合い下さい。

また、以下YouTube動画とも連動していますので、合わせてご覧いただければと思います。

では、どうぞよろしくお願いします!

スポンサーリンク

VBAプログラムを書いてみる

コードウィンドウに以下プログラムを記載します。

変数の宣言を強制にしている場合はOption Explicitと記載があると思いますのでその下に記述してください。

できればコピペではなくてちゃんとタイプをしてもらいたいです。
そのほうが覚えると思います。

Sub test() 'Sub プロシージャ名()ではじまります

Dim numTest As Long     '整数を入れる変数を宣言
Dim strTest As String   '文字列を入れる変数を宣言
Dim dateTest As Date    '日付を入れる変数を宣言

numTest = 505       '数値の場合はそのまま代入
strTest = "0505"    '文字列の場合はダブルクォーテーションで囲って代入
dateTest = "5/5"    '日付の場合もダブルクォーテーションで囲って代入

Debug.Print numTest  'numTestの中身をデバッグ用プリント
Debug.Print strTest  'strTestの中身をデバッグ用プリント
Debug.Print dateTest 'dateTestの中身をデバッグ用プリント

End Sub  'End Subで終わります

VBAプログラムの実行

では実行してみましょう。コードウィンドウのどこかにカーソルがあることを確認して

VBE実行ボタン

こちらのツールバーの実行ボタンをクリック。

またはショートカットキー F5 でもOKです。

VBAプログラム実行結果

実行結果ですが、イミディエイトウィンドウに謎の値が3つ表示されれば成功です。

それでは実際にこのプログラムの内容を解説していきます。

プログラムをSubプロシージャの中に書く

まずVBAプログラムは、プロシージャと呼ばれるまとまり単位で記述をしていきます。

プロシージャにはいくつか種類がありますが、今回はSubプロシージャを使います。最初のうちは、ほぼSubしか使わないと思いますので、まずはそれだけ覚えてください。

Sub プロシージャ名()で始まりEnd Subで終わるというルールになっています。

Sub test() 'Sub プロシージャ名()ではじまります

'(中略)ここにプログラムを書く

End Sub  'End Subで終わります

好きなコメントを書く

シングルクオーテーション「’」の後には好きなコメントを入れることができます。

'シングルクオーテーションの後に自由にコメントを入れる

デバッグの時や後で見返すときに楽ですので、コメントはできるだけつけておいたほうが良いです。

Dimで変数を宣言する

変数とは数値や文字列や日付などを入れることができる箱のことです。

変数は使う前に「こういう名前の箱を、このタイプで使うからね」と宣言をしておく必要があります。

記述方法は

Dim 変数名 As 変数の型

となります。

Dim numTest As Long     '整数を入れる変数を宣言
Dim strTest As String   '文字列を入れる変数を宣言
Dim dateTest As Date    '日付を入れる変数を宣言

変数の型はいくつか種類がありまして、その型にマッチしたものしか入れることができません。

例えば、Long型の箱に文字列を入れることはできないということですね。

変数の型にはいくつか種類がありますが、ひとまず整数型Long、文字列型String、日付型Dateの3つをここでは覚えて頂ければと思います。

変数に値を代入する

変数にはイコール「=」を使って値を代入します。

変数名 = 値
numTest = 505       '数値の場合はそのまま代入
strTest = "0505"    '文字列の場合はダブルクォーテーションで囲って代入
dateTest = "5/5"    '日付の場合もダブルクォーテーションで囲って代入

numTestとい変数の中には505という数値が、strTestという変数の中には0505という文字列が…といったカタチで格納されます。

文字列型と日付型の場合は代入する値をダブルクオーテーション「”」で囲う必要があります。数値の場合はダブルクォーテーションは不要です。

Debug.Printで変数の値を出力する

Debug.Printは変数の中身を知るためのデバッグ用の命令で

Debug.Print 変数名

と書きます。

その命令が実行された時点での指定された変数の中身がイミディエイトウィンドウに表示されます。

デバッグ用なので使わなくてもプログラムが成立する場合がほとんどです。

ただ、初心者のほうがプログラムのミスが多いと思うので、Debug.printを使いこなしておいたほうが習得が早くなります。

Debug.Print numTest  'numTestの中身をデバッグ用プリント
Debug.Print strTest  'strTestの中身をデバッグ用プリント
Debug.Print dateTest 'dateTestの中身をデバッグ用プリント

代入した時点でdataTestには”5/5″と代入しましたが、実行結果でイミディエイトウィンドウに表示されたのは「2015/05/05」でした。

これは日付型の便利なところで、年を省略すると自動で現時点での年として認識をしてくれます。

覚えておくと便利ですよ。

Debug.Printについてもっと詳しく知りたい方は以下の記事もご参考下さい。

【エクセルVBA】初心者のうちから知っておくべきDebug.Printの使い方
今回はエクセルVBAでイミディエイトウィンドウを使う方法の超基本として、初心者のうちからぜひとも知っておいて欲しいDebug.Printの使い方です。一行に複数の出力をする方法も解説していますよ。

まとめ

たいしてつまらないプログラムなのによくここまでお付き合い頂きました。ありがとうございます。

エクセルVBAの基本の基本は以上の通りです。

  • VBAプログラムはF5キーで実行
  • プログラムはSubプロシージャの中に書く
  • シングルクォーテーションの後に好きなコメントを書く
  • Dimで変数名とその型を宣言する
  • イコールで変数に値を代入する
  • Debug.Printで変数の中身を出力

これで正しいプログラムを実行できるVBAの経験者になりました。

まだまだできることは無数にありますので、実際にお仕事に活用するにはもう少し勉強が必要です。

ただ、WEB上には先人たちの知恵が大量に出回っていますので、ネット検索だけでもある程度学べるのではないかと思います。

当ブログでは以下ではじまる請求書シリーズをオススメしていますので、ぜひトライしてみてください!

【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
初心者向けVBAの実用的な使い方について、請求データ一覧から請求書を自動で作成するを目標に進めます。初回はWorksheetオブジェクト、Rangeオブジェクトと、セルの値の操作についてお伝えします。

連載目次:エクセルVBAを始める前の準備をしよう

  1. 1,200万人の事務員たちよ、VBAという武器を手に戦いに出よ!
  2. エクセルVBA超入門!たった10分でスタート地点に立つための方法
  3. エクセルVBA超入門!プログラミングと変数の基礎中の基礎

連載目次:データ一覧から請求書を自動で作る

お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。
  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法
  3. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  4. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  5. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  6. 【初心者向けエクセルVBA】セル範囲を一気にまとめてコピーする方法
  7. 【初心者向けエクセルVBA】ワークシートのデータのある範囲だけをピッタリ取得する方法
  8. 【初心者向けエクセルVBA】セル範囲の平行移動をする方法・リサイズをする方法
  9. 【初心者向けエクセルVBA】日付データから年・月・日を取り出す
  10. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  11. 【初心者向けエクセルVBA】For~Next文でセル範囲を一行ずつ移動させる
  12. 【初心者向けエクセルVBA】セル範囲のクリア~ClearContentsメソッドとClearメソッド
  13. 【初心者向けエクセルVBA】ワークシート・セルを選択する方法の色々について
  14. 【初心者向けエクセルVBA】入力ダイアログを表示するInputBoxメソッドの使い方
  15. 【初心者向けエクセルVBA】日付データから月末日と翌月末日を自動算出する
  16. 【初心者向けエクセルVBA】ワークシートをコピーする方法とそのシート名を変更する方法
  17. 【初心者向けエクセルVBA】オブジェクトを変数にセットして取り扱う方法
  18. 【初心者向けエクセルVBA】Openメソッドで新たなブックを開く方法
  19. 【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する
  20. 【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
  21. 【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法
  22. 【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る

コメント

  1. 李 勇男 より:

    すごくわかりやすく、役立ちます。

  2. でっち より:

    分かりやすくて良かったです。
    ありがとうございます。
    自分は、VBAで何か作ってみたいのですが、
    どうすればいいのか分かりません・・・
    できれば、続編みたいなので教えてほしいです。

  3. ガブリアス。 より:

    なかなかVBAを自宅で学べる講座もなかったのでとても助かります!

    費用の問題もあり、自己投資大事なのは承知の上でも金額が…と悩んでいたところ行き当たりばったり。

    VBAに関してはタカハシさんのサイト一本で勉強していきます!

    • ガブリアス。さん
      コメントありがとうございます!
      ネットだけでも少しずつ階段を上るようにスキルアップができればと思って書いています。
      引き続きお役に立てれば嬉しいです。

  4. パルコ より:

    凄くわかりやすくて勉強になります。
    動画も文面もあるので復習もしやすくて凄く感謝します。
    無償でこんな記事をかいてらっしゃるのことに
    感服してます。
    pythonとかも勉強してるので、一緒に拝見さして
    いただきます!!。

タイトルとURLをコピーしました