VBA技術解説
VBAとは、マクロとは

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2013年5月以前 最終更新日:2018-08-10

VBAとは、マクロとは


エクセル作業に忙殺されて、「どうにかならないものか」そう思って調べるてみると、
VBA」「マクロ
何やら操作を自動化できるようだが、、、
VBAとは何?マクロとは何?


以下では、順にVBAとマクロがどのようなものかを簡単に説明していきます。

マクロとは

エクセルの操作を自動化するものです。

その自動化する機能が、「マクロ」と呼ばれています。

たまに、「マクロの記録」をマクロと説明されている場合がありますが、
マクロは、操作を自動化できる機能を指すものです。
つまり、
マクロは、エクセルの機能の一つです。

マクロの中身は、VBAというプログラミング言語で書かれています。
何らかの操作を行う一塊りのVBAプログラミングが、一つのマクロであると言えます。



VBAとは

マクロの中身はプログラムで、そこで使用されているプログラミング言語が、VBA(Visual Basic for Applications)です。

最後のApplicationsは複数形になっています。
これは、ExcelだけではなくMicrosoftのOffice製品全般に共通で搭載されているマクロ機能でVBAが使われているためです。

Excelにある「マクロ機能」の中身が、プログラミング言語である「VBA」で記述されているという事です。

VBA(Visual Basic for Applications)
マイクロソフトのプログラミング言語「Microsoft Visual Basic」を、同社製品のMicrosoft Officeに搭載したものです。
・Officeに最初から備わっている機能では不十分なので、もっと機能拡張したい
・手作業が大変なので、自動処理させたい
これらを実現するのが、マクロ機能であり、具体的に記述する時の言語がVBAなのです。

言語としてのVBAは、ほぼ英単語がそのまま使われています。
むしろ単数形、複数形などが忠実に使われたりしています。
ですので、英単語を順に読んでいけば、ある程度は記述されている事を理解できます。
(知っている英単語であればという事です。)
しかし、英語でも同じですが、なんとなく読めたとしても、書いたり話したりするのは難しいものです。
つまり、VBAを覚えるという事は、VBAを書けるようになるという事になります。
ただし、少なくとも書けるようになるには、読めることが前提にはなります。



マクロを使う準備

2007以降の場合は、「開発」タプを表示します。

「オフィスボタン」→「Excelのオプション」→「基本設定」で、

「開発」タブをリボンに表示する、にチェックを付けます。



マクロの記録とは

エクセルのマクロ機能の中には、「マクロの記録」という機能が搭載されていて、
手動での操作が、マクロのコードとして記録されます。

つまり手動操作した内容が、VBAコードとして自動で書かれます。

この「マクロの記録」だけでも、それなりの自動化は実現できるのですが、
どうしても、無駄が多く、非効率なプログラムコードとなっています。

また、「マクロの記録」では記録されない操作があったり、
そもそも、手動での操作が出来ない場合も多いのです。

そこで、マクロの記述言語であるVBAを覚える必要が出てきます。

VBAを覚えることで、より複雑な処理のマクロを作成することができるようになります。



マクロの記録の使い方

1.2003なら、「ツール」→「マクロ」→「新しいマクロの記録」

  2007以降、「開発」→「マクロの記録」

  「マクロの記録」が表示されます。

2.マクロ名は「Macro1」のままで良いでしょう。「OK」

3.適当なセル、例えば、A1を選択し、「こんにちは」と入力します。

4.2003なら、「ツール」→「マクロ」→「記録終了」

  2007以降、「開発」→「記録終了」

これで、マクロが記録されました。



マクロの内容を見る

「Visual Basic Editor」を起動します。

2003なら、「ツール」→「マクロ」→「Visual Basic Editor」

2007以降、「開発」→「Visual Basic」

ショートカットはAlt+F11です。

VBAとは、マクロとは 画像

それぞれのウィンドウは、

左上が「プロジェクト」、左下が「プロパティ」、右上が「コード」等になります。

「プロジェクト」に「標準モジュール」が出来ています。

「標準モジュール」を展開すると、「Modure1」があります。
展開するには、+部分をクリックするか、「標準モジュール」をダブルクリックします。

「標準モジュール」の下に、「Module1」がありますので、
これをダブルクリック、または、F7で、「コード」が表示されます。

VBAとは、マクロとは 画像

中には、



Sub Macro1()
'
' Macro1 Macro
'

'
  Range("A1").Select
  ActiveCell.FormulaR1C1 = "こんにちは"
  Range("A2").Select
End Sub

これが、マクロであり、このプログラミング言語をVBAと呼びます。



マクロの実行方法

1.エクセルの画面に戻って、A1をクリアし

2.2003なら、「ツール」→「マクロ」→「マクロ」

  2007以降、「開発」→「マクロ」

  ショートカットは、Alt+F8です。

3.「Macro1」を選択し、「実行」

これで再び、A1に「こんにちは」と入ったはずです。



Macto1のコードの説明

Sub Macro1()
・・・
End Sub

これが1つの単位です、プロシージャーと呼びます。
SubはSubプロシージャーと呼ばれます。

「'」以降は、その行は、コメントとなります。行の途中からでも書くことができます。

Range("A1").Select、A1セルを選択します。

Selectはメソッドと呼ばれます。

ActiveCell.FormulaR1C1 = "こんにちは"、選択セルに「こんにちは」と入れます。

この場合の「=」は、等号というより、値の代入になります。

ActiveCellはオブシェクト、FormulaR1C1はプロパティと呼びます。

さらに、私は、Enterしたので、下のセルA2が選択されました。



以下では、VBAで頻繁に使われる用語について、ごく簡単に説明します。
直ぐに覚えられないと思いますし、理解できない文章も多いと思いますが、
まずは、こういう用語が使われているのだという程度で読んでください。
以下の用語については、「なんとなく聞いたことがある」程度になっていれば、ひとまずは良いでしょう。


モジュールとは

モジュールには、

「シートモジュール」

「ブックモジュール」

「標準モジュール」

「クラスモジュール」

があります。

「シートモジュール」は、シート毎に作成し、そのシートの操作で使用します。

「ブックモジュール」は、ブックに1つで、そのブックの操作で使用します。

「標準モジュール」は、上記のモジュール等で共通で使用します。

「クラスモジュール」は、クラスを作成します。今回のシリーズでは使用しません。



プロシージャーとは

プロシージャーは、procedureであり手順です、一連の手順を記述したものです。

プロシージャーには、SubとFunctionの2種類があります。



Subプロシージャーとは

Sub プロシージャー名(引数)
・・・
End Sub

です、引数は省略できます。

プロシージャーと言った場合は、モジュールの全てを指すことになります。

モジュールの中に複数のサブ(Sub)プロシージャーがあることになります。

また、本当は、スコープが先頭に入り、Private SubPublic Subとなります。

しかし、スコープを意識したプログラミングは初心者には難しいので、当面は省略します。

省略した場合は、Publicとなり、他のモジュールから参照でき、

Privateの場合は、同一モジュール内のみ参照が可能です。

とりあえず今は気にする必要はないです。

引数は、外部からそのプロシージャーを呼び出した時に、値の引き渡しに使用します。

引数は省略できます。

引数の指定方法は、おいおい説明します。



Functionプロシージャーとは

Function プロシージャー名(引数) As 戻り値のデータ型
・・・
End Sub

Subプロシージャーとの違いは、処理した結果(戻り値)を返すところです。

呼び出す側では、この戻り値を使用します。

例えば、Subでは、処理が正しく行われたかどうかが分かりません。

Functionでは、処理結果を戻すことにより、呼び出し側で判定ができるようになります。

上記以外は、Subと同様と考えて下さい。



オブジェクトとは

オブジェクトは、objectであり、物・物体のことです。

VBAで何か操作をしようとする対象となるものがオブシェクトです。

ブックやシート、そしてセルなどを指します。



プロパティとは

プロパティは、propertyであり、財産・資産のことです。

オブジェクトの持つ財産・資産のことであり、オブジェクトの性質を表すデータです。

セルの持つ値や書式は全て、セルのプロパティです。



メソッドとは

メソッドは、methodであり、方法。方式です。

オブジェクトに対する動作・操作を指定します。

セルを選択する、セルを削除する等です。



まだまだ説明が足りませんが、とりあえず、単語だけ覚えてもらえれば良いと思います。
また、ネット上には、VBA入門が多数あるので、参考にして下さい。

本サイトでは多数のVBA説明ページとVBAサンプルコードを掲載しています。
まずは手始めに、以下のシリーズから読んでみて下さい。

ExcelマクロVBA入門
・VBA学習の進め方について ・1. VBAの基礎・基本:VBA入門 ・2. VBA入門に必要なVBEの基本的使い方 ・3. VBAプログラミングの基礎・基本 ・4. Excel各種機能とオブジェクトの理解:VBA入門 ・5. VBA初級からVBA中級を目指して ・6. VBA入門の後日追加記事 ・7. VBA入門その後の学習について ・「VBA入門」の記事を学校の授業もしくは企業研修でお使いになる場合

Excelマクロ再入門
・準備:VBA再入門 ・セルを扱う:VBA再入門 ・エクセルの便利機能:VBA再入門 ・ブック・シートを扱う:VBA再入門 ・マクロ全体を最適化する:VBA再入門 ・自動化への道:VBA再入門 ・最後に:VBA再入門 ・VBAエキスパートを受験する人は


資格をとるのなら、

MOS VBAエキスパート対策
・VBAエキスパート試験リニューアル ・本シリーズの目的 ・VBAエキスパート学習の意義 ・VBAエキスパートの種類 ・VBAエキスパート公式テキスト ・筆者が模擬問題プログラムをやってみた ・各ページ内の構成 ・VBAベーシック:VBAエキスパート対策 ・VBAスタンダード:VBAエキスパート対策 ・あとがき:VBAエキスパート対策




同じテーマ「マクロVBA技術解説」の記事

VBAとは、マクロとは
コーディングとデバッグ
ローカルウィンドウの使い方
WorksheetFunctionについて
RangeとCellsの深遠
Offset、Resizeを使いこなそう
値渡し(ByVal)、参照渡し(ByRef)について
最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)
ユーザー定義関数の作り方
セルの値について(Value,Value2,Text)
Excelのバージョンを判断して「名前を付けて保存」


新着記事NEW ・・・新着記事一覧を見る

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ