どーも、こんにちは、山羊丸です。
今日もExcelVBA講座を行っていきます。
↓は入門編リンクです。
ExcelVBA入門。初めて触るプログラミング言語。その1【概要編】
ExcelVBA入門。初めて触るプログラミング言語。その2【基本編】←今日はここ
今日はプログラミングの知識と基本を、おさえて行きましょう。
プログラミングの基本中の基本
プログラムというのは多彩なことができるイメージを持たれる方も多いでしょう。
結果だけ見れば確かに何でもできることは事実です。
しかし、その内容はというと実は基本的要素で構成されています。
それが、順次処理、分岐処理、反復処理です。
これはどんな言語を用いても必ず存在する要素です。
順次処理
順次処理とはプログラムを順番に実行していく、ごく基本的な要素です。
これは残り二つの要素と比較して圧倒的に多いものです。
これは言語によっても記述が大きくことなりますし、
実装するコードによって様々なものがあります。
分岐処理
分岐処理とは条件によって処理を変えていく、
というごく簡単な処理のことを言います。
一番分かりやすいのがIf文でしょう。
Excel関数を使える方は分かる方もいるでしょう。
~~の時ならば実行、それ以外ではエラー
というのもごく簡単な分岐処理です。
反復処理
反復処理とはいわゆるループ文と言われるようなものです。
~~の値が一定の値になるまで処理を繰り返す、というものです。
分岐処理と似ていますが、膨大な分岐をそのまま書いていたら大変です。
そのため反復処理を用いて、連続した分岐を処理します。
上記3つの処理をおさえる
上記3つの処理でプログラミングが構成されていますが、
どれも欠かせない要素です。実は数学的にも、
どんなプログラムもこの三つの要素で構成できることが証明されています。
準備編
では早速処理を勉強する前にVBEの基本的な設定をしましょう。
VBEを立ち上げ、以下の設定を行いましょう。
「ツール」→「オプション」を選択します。
「自動構文チェック」外し、「変数の宣言を強制」をつけます。
※今は意味が分からないかもしれませんが、これが重要な準備となります。
ちょっとだけ内容を解説すると、
自動構文チェックはExcelにいちいちエラーをポップアップで表示しなくさせます
変数の宣言を強制は厳密なプログラムを書くために必要なものです。
実践編
準備ができたら標準モジュールを追加してみましょう。
↑のような画面になるはずです。
「Option Explicit」というコードは変数の宣言を強制すると自動的に出てきます。
では以下のコードを入力してみてください。コピペ可。
Option Explicit Sub テスト() '★順次処理 'このブックのシート1のA1セルの値に1を代入する ThisWorkbook.Worksheets(1).Range("A1").Value = 1 '★分岐処理 'B1セルに未入力が入っていたら If (ThisWorkbook.Worksheets(1).Range("B1").Value = "") Then 'B1セルが空白なら未入力を出力 ThisWorkbook.Worksheets(1).Range("B1").Value = "未入力" Else 'B1セルに値が入っていたら入力済みを出力 ThisWorkbook.Worksheets(1).Range("B1").Value = "入力済み" End If '★変数宣言 Dim row_loop As Integer '★反復処理 '1~から10まで処理 For row_loop = 1 To 10 'セルのC1~C10まで1を挿入 ThisWorkbook.Worksheets(1).Cells(row_loop, 3).Value = 1 Next row_loop End Sub
↑上記のコードは順次処理、分岐処理、反復処理の全てが入っています。
2回実行すると未入力だったB1セルが、入力済みに変わります。
ちなみに行の ‘ の後に書かれている文字はコメント言ってプログラムには影響ありません
解説編
★順次処理
ThisWorkbook.Worksheets(1).Range(“A1”).Value
↑はこのブックの一番左のシートのA1セルの値という意味です。
このようにExcelVBAは . でコードを繋いでいきます。
数学と違いプログラムの = は代入を意味します。
ThisWorkbook.Worksheets(1).Range(“A1”).Value = 1
ですから。↑のコードはA1セルに1を代入するというコードになります。
★分岐処理
分岐処理では今回IF文を用いています。
If (ThisWorkbook.Worksheets(1).Range(“B1”).Value = “”) Then
で分岐をしています。カッコの中が条件式です。
B1セルが空白ならという意味です。
If文は必ずIfから始まり、End Ifで終了します。
★反復処理
今回反復処理はFor文を用いています。
先に変数宣言をしていますが、
Dim row_loop As Integer
↑はDimが宣言開始でrow_loopという変数を作り、
短い整数(Integer)型を指定しています。
For row_loop = 1 To 10
↑でrow_loopに1を代入し、10回まで反復処理を実行します。
For文は必ずNextで終了し、指定が無ければ変数に+1を代入します。
Next row_loop
↑でrow_loopに1を加算しています。
最後に以下のコードですが深くは理解しなくても、まだ大丈夫です。
ThisWorkbook.Worksheets(1).Cells(row_loop, 3).Value = 1
今まではRangeを使ってセルを指定していましたが、
反復処理と相性がいいのがCellsです。
Cells(行,列)という書式で記述します。
今回はCells(row_loop, 3)なので、
ループ中の1~10行の3列目(C列)のセルの値に1を代入しています。
まとめ
いかがでしたでしょうか?
ちょっと難しいと感じるかもしれませんが、
順を追っていけば時間があれば理解できるはずです。
今回の講座は以上となりますが、
皆様の何らかの参考になれば幸いです。