学習パート
本記事のパートでは『Chapter 2 -知識・基本動作』を説明します。

これまでの学習パート
本学習パートまでに以下のパートを完了させましょう。
Chapter 2 -絶対におさえておく基本知識
おさえておく基本知識は3つ
絶対におさえておく基本知識は3つあります。
<基本知識>
①レンジとセルの基本・・・
1番重要な知識
②コード構文の基本
③文字列の扱い方の基本(個人的に最初に知りたかったもの)
私が学習初期の頃、各Webサイトで横断して勉強していたのですが、
専門用語が多く意味が分かりませんでした。
今となってはですが、実現したい事を達成するためには
専門用語を1から理解することは必要ありません。
(後追いで場当たり的に都度理解していけば十分)
本当に必要なものは、結局は コードなんです。
(当然ですが、専門用語でプログラムは動かない)
歴史があるEXCEL VBAのコードは、
各Webサイトにたくさん公開されており、そのコードを理解し流用すれば良いわけです。
ポイントは、そのコードを理解すること。
そのために大前提となる事前知識として
初期で本当に必要な基本知識は3つだった、
というのを経験上お伝えしたかったです。
(この知識を知らなかったため、何度も挫折しかけました。)
この3つの基本知識を正しく理解しておけば、
今後、不明点を調べる際、各Webサイトで紹介されている
VBAコードの内容を 「何となく」でも理解が出来る確率が大幅に上がります。
この「なんとなく」が実は重要で、
プログラムをトライ&エラーで経験値に変えていく作業はどうしても必要となり、
なんとなくが理解できれば、まずはトライができるためとても重要です。
①レンジとセルの基本(重要)
レンジとセルってそもそも何?という方に説明すると、
セルは 「A1」というように表現がされ、
レンジは「セルの範囲」を意味し「A1:C3」というような表現がされます。


EXCEL関数を利用する際、よく目にするかと思いますが、
制御したいセルを特定しなければ 何も出来ません。
VBAでは 「Range」と「Cells」という2つの表現方法で セルを特定させます。
このパートではセルの特定方法(位置関係)を理解するために、
EXCELセル上にVBA上でのコードを記載し表現します。
VBAコード上でのセルの表現の仕方

Cellsを用いた特定方法が個人的に重要だと思います。
というのも、Cellsの考え方が分からずにVBAを倦厭している人を多く見ているからです。
CellsはCells(行,列)でセルを表現しているだけですので、
このタイミングでしっかりおきましょう。
<EXCEL表現> <VBAコード上での表現>
A1 = Range("A1") = Cells(1,1)
A2 = Range("A2") = Cells(2,1)
A3 = Range("A3") = Cells(3,1)
B1 = Range("B1") = Cells(1,2)
B2 = Range("B2") = Cells(2,2)
B3 = Range("B3") = Cells(3,2)
C1 = Range("C1") = Cells(1,3)
C2 = Range("C2") = Cells(2,3)
C3 = Range("C3") = Cells(3,3)
VBAコード上でのレンジの表現の仕方

<EXCEL表現> <VBAコード上での表現>
A1:B3 = Range("A1:B3")
= Range("A1”,”B3")
= Range(Cells(1, 1), Cells(3, 2))
②コード構文の基本
VBAのセルに対するコード構文は2つだけです。
<構文の種類>
1.プロパティ構文
構文:対象(オブジェクト).属性(プロパティ)=値

2.メソッド構文
-SV系-
構文:対象(オブジェクト).動作(メソッド)

-SVO系-
構文:対象(オブジェクト).動作(メソッド) 対象(オブジェクト)

メソッド構文は英語の文法と同じです。
S(主語)+V(自動詞)形式のSV系や
S(主語)+V(他動詞)+O(目的語)形式のSVO系で 表現されているからです。
プロパティ構文とメソッド構文で覚えておくこと
メソッド構文(SV系)はSに対しVが作用するのみなので覚えていられるかと。
ここで必ず覚えておくことととしては以下の通りです。
<覚えること>
・プロパティ構文は、右のものが 左に作用する
・メソッド構文(SVO系)は、左のものを 右に作用する
作用させる向きが それぞれ逆なので このポイントを覚えておけばOKです。

③文字列の扱い方の基本(個人的に最初に知りたかったもの)
EXCELの関数と同じように VBAでも文字列として扱うものは
「" (ダブルコーテーション)」で文字列を囲います。
EXCEL関数の IF文を使用する人はイメージが付きやすいと思います。

EXCEL VBAも 「EXCEL」なので、
文字列の扱いは 関数で使用する方法と同じであると考えてください。
知ってしまえば簡単だけど、
VBA参考書で登場するのは 意外と後ろの方だったので
このタイミングで覚えておくと とても良いと思います。
Chapter 2 - VBEに直接コードを入力
コードのみの記載だけだと難しく感じるかもしれませんが、
VBEにコードを直接入力し 実際に動くことを体験してみると理解がはかどると思います。
VBEに以下のコードを入力しVBAを実行してみましょう。
|
Sub Macro1() Range("A1").Value = "Hello!VBA!" Cells(3, 1).Value = "Hello!World!" End Sub |

VBEに直接入力したコードが、
EXCELに作用していることが分かるかと思います。
余談:プログラム入門にVBAは最適
プログラムが難しく感じるのは、
個人的には3つの要素があると思っています。
<プログラムが難しいと思う 3要素>
1.何を準備すれば良いか分からない
2.どこにコードを入力すれば良いか分からない
3.何が出来るか分からない
これら3つの要素を解決しているのがVBAです。
(あとは、HTMLもかな。)
<プログラム入門にVBAが最適な理由>
1.何を準備すれば良いか分からない
→EXCELを準備するだけでOK
2.どこにコードを入力すれば良いか分からない
→VBEに入力すればOK
3.何が出来るか分からない
→普段EXCEL利用している人なら
実現したいものは1つや2つありイメージがつく。
また、歴史あるプログラム言語のため
やりたいことの大半Googleで出てくる。
関係書籍も豊富。
プログラム言語の基礎をVBAで習得し、
他の言語にステップアップするというのも可能で、
プログラムは簡単だと実感ができれば挫折しにくくなるんじゃないかなと。
だから、プログラム入門にVBAが最適だと考えています。
Chapter 2 -Sub~EndSub
VBEにVBAコードを入力しプログラムを作成していくのですがルールがあります。
<VBA作成ルール>
・Sub ~ EndSub の間にVBAコードを作成する
「Sub~EndSub」を1つの単位にプログラムは実行されます。

このルールにより、複数のプログラムを作成する際は
以下のように作成することができます。

尚、同じ標準モジュール内に複数のプログラムを記載したくない方は、
標準モジュールを増やすことができます。

Chapter 2 -コピーと貼付
「A1セルをコピーしてB1セルに貼付する」で説明します。
構文によって書き方が異なります。
◎プロパティ構文の場合
|
Sub プロパティ構文の場合() Range("B1").Value = Range("A1").Value '↓これも同じ意味 'Cells(1,2).value = Cells(1,1).value End Sub |
◎メソッド構文の場合
|
Sub メソッド構文の場合() Range("A1").Copy Range("B1") '↓これも同じ意味 ' Cells(1,1).Copy Cells(1,2) End Sub |

Chapter 2 -値の削除
「A1セルの値を削除する」で説明します。
|
Sub プロパティ構文の場合() Range("A1").Value = "" '↓これも同じ意味 'Cells(1,1).value = "" End Sub |
◎メソッド構文の場合
|
Sub メソッド構文の場合() Range("A1").Clearcontents End Sub |

メソッド構文でセル値を削除する際、
Deleteメソッドを使用しがちですが
列ごと・行ごと削除されるため気を付けましょう。
Chapter 2 -終わりに
以上でChapter2が終了です。
Chapter2は基礎がメインとなりますが、
基本的な知識が身につけば あとは知識の上乗せだけです。
Chapter2の内容は繰り返し見返すようにしましょう。
またChapte2の後半で説明した「コピーと貼付」「値の削除」は
今後頻繁に使用するものですので、正しく理解しておきましょう。
Chapter3以降は VBAコード知識を上乗せしていくパートとなります。
引き続き頑張っていきましょう。
次学習パートへ
Chapter 3-基本/応用 編はこちら