エクセルマクロ・VBA発展編1
◆必要な事前知識:「エクセルマクロ・VBA基礎編」修了レベル◆
ExcelマクロVBAのやや高度な抽象概念を学びます。
動画一覧
動画のサムネイルをクリックすると、この画面内で、動画が表示されます。
【動画1】 発展1講座イントロダクション - 使用するファイル、PDFの確認 - 39秒
ログインすると、詳細情報を取得できます
【動画2】 発展1講座イントロダクション - デバッグ イミディエイトウィンド - 9分51秒
ログインすると、詳細情報を取得できます
【動画3】 発展1講座第1章 - オープニング 第1章1 - 1分46秒
ログインすると、詳細情報を取得できます
【動画4】 発展1講座第1章 - オープニング 第1章2 - 4分18秒
ログインすると、詳細情報を取得できます
【動画5】 発展1講座第1章 - データの「型」1 - 10分43秒
見積書の所定のセルに、「お見積額合計」という文字と、「合計金額」の値を入力するマクロです。変数宣言時にデータ型を指定していないとき、変数に間違えて違う型の値を入れていてもマクロは実行されてしまいます。そこで、変数宣言時に、データ型を指定することによって、あり得ない取り違いを防ぐことができます。
ログインすると、詳細情報を取得できます
【動画6】 発展1講座第1章 - データの「型」2 - 4分52秒
「As String 文字列型」
「As Date 日付型」
「As Long 長整数型」
「As Double 倍精度浮動小数型」
「As Boolean ブール型」
ログインすると、詳細情報を取得できます
【動画7】 発展1講座第1章 - 変数の初期値 - 2分50秒
変数は指定した「データ」型によって、変数を設定した段階で、初期値が自動的に決まるようになっています。
ログインすると、詳細情報を取得できます
【動画8】 発展1講座第1章 - ハンガリアン記法 - 4分38秒
例えば、Date型の変数なら、「Dim dFinal As Date」と変数の前に[d]、文字列のString型なら、Dim sCompany As Stringと変数の前に[s]をつけるやり方です。
ログインすると、詳細情報を取得できます
【動画9】 発展1講座第1章 - 変数宣言の強制1 - 3分55秒
これは、プログラムを書くときに、「変数の宣言を強制する」というメッセージです。
ログインすると、詳細情報を取得できます
【動画10】 発展1講座第1章 - 変数宣言の強制2 - 13分3秒
Option Explicit があると、変数の宣言は、「しなくてはならない」ですが、Option Explicit がないと、変数の宣言は、「してもしなくてもよい」となります。「してはならない」ではありませんので注意してください。
ログインすると、詳細情報を取得できます
【動画11】 発展1講座第1章 - 総称オブジェクト型 - 18分25秒
ログインすると、詳細情報を取得できます
【動画12】 発展1講座第1章 - 固有オブジェクト型 - 6分40秒
総称オブジェクト型 As Object は、セル、シート、ファイル、図形など、どんなオブジェクトにも使えます。それに対し固有オブジェクト型は、より細かいオブジェクトの指定ができます。As Range で作った変数は、セルに対してニックネームを使用することができますが、セル以外のオブジェクトに対して使用しようとするとエラーが出ます。
ログインすると、詳細情報を取得できます
【動画13】 発展1講座第1章 - バリアント型 - 2分28秒
ログインすると、詳細情報を取得できます
【動画14】 発展1講座第2章 - オープニング 第2章 - 3分48秒
オブジェクトの状態を変えることを、「プロパティを『設定する』」、といいます。
オブジェクトの状態を調べることを、「プロパティを『取得する』」、といいます。
この章では、プロパティという概念とは違う、「メソッド」という概念についても話していきます。プロパティとメソッドを含めて「メンバー」という言葉もあります。
ログインすると、詳細情報を取得できます
【動画15】 発展1講座第2章 - コレクション - 3分59秒
コレクションとは、「同じタイプのオブジェクトの集合体」のことです。エクセルマクロで登場するコレクションは、セル、図形、コメント、行、ワークシート、ブックなどです。
ログインすると、詳細情報を取得できます
【動画16】 発展1講座第2章 - コレクション(インデックス) - 5分35秒
ログインすると、詳細情報を取得できます
【動画17】 発展1講座第2章 - コレクション(インデックス)の具体例 - 5分39秒
Worksheets("GetEnd1").Tab.Color = vbRed
すべてのシートの集合体の中のシート「GetEnd1」のタブの色を vbRed にする。
Worksheets(3).Tab.Color = vbBlue
すべてのシートの集合体の中の「前から3番目」のシートのタブの色を vbBlue にする、です。インデックスに数字を指定することもできます。
ログインすると、詳細情報を取得できます
【動画18】 発展1講座第2章 - プロパティ 従属要素のオブジェクト - 9分6秒
基礎編レベルでは、プロパティは「『値』として表現できるデータのことを指してきましたが、プロパティは、あるオブジェクトと関係するオブジェクトを指すこともできます。たとえば、従属要素のオブジェクトはプロパティ足り得ます。
ログインすると、詳細情報を取得できます
【動画19】 発展1講座第2章 - プロパティ 上位のオブジェクト - 7分1秒
セルから見て上位にあるシートも、セルのプロパティとなります。シートから見たファイルも同様です。つまり、階層構造の下にも、上に行くときも、プロパティという言い方ができます。
ログインすると、詳細情報を取得できます
【動画20】 発展1講座第2章 - プロパティ 同レベルのオブジェクト - 7分19秒
ログインすると、詳細情報を取得できます
【動画21】 発展1講座第2章 - プロパティ 値として表現できるデータ - 10分15秒
ログインすると、詳細情報を取得できます
【動画22】 発展1講座第2章 - プロパティ Offset - 11分20秒
ログインすると、詳細情報を取得できます
【動画23】 発展1講座第2章 - プロパティ Offsetの使い方 - 4分54秒
基礎編のレベルでは、「For Next構文」を使って、行番号を変数に設定して、行の繰り返し処理をすることはできましたが、横方向、列の繰り返し処理はできませんでした。
列の繰り返し処理は、Offsetを使えば可能になります。
もちろん、Offsetを使って、行の繰り返し処理も可能ですし、行、列の繰り返しも可能です。
ログインすると、詳細情報を取得できます
【動画24】 発展1講座第2章 - End プロパティの使い方 - 13分9秒
Endプロパティは、指定されたセルが含まれる領域の終端のセルを示す Range オブジェクトを返します。エクセル上で、[Ctrl]+方向キー(↑、↓、←、→)の操作に相当します。
Endプロパティを使って、データの最終行の行番号を求められますので、毎月データ数が変わるデータを処理する場合などに利用できます。
ログインすると、詳細情報を取得できます
【動画25】 発展1講座第2章 - メソッド1 - 2分59秒
ログインすると、詳細情報を取得できます
【動画26】 発展1講座第2章 - メソッド2 - 9分8秒
条件を指定するときは、
「条件名 := 具体的にやってほしいこと」
複数の条件がくるときは、「,」 で区切ることになっています。
メソッドと、プロパティの取得・設定との見分け方についても学んでいきます。
ログインすると、詳細情報を取得できます
【動画27】 発展1講座第3章 - マクロの自動記録 イントロダクション - 9分35秒
マクロの自動記録とは、エクセル上で操作した手順を、そのままマクロのプログラムにしてくれる機能です。
たとえば、オートフィルタ、並べかえ、シートのコピー、グラフ作成など、どうマクロを書けばわからない場合は、マクロの自動記録でプログラムを書いてみます。ただ、自動記録で書かれたマクロには「独特のクセ」があります。このクセを理解して、マクロのコードを読めるようになるスキルを身に付ける必要があります。
ログインすると、詳細情報を取得できます
【動画28】 発展1講座第3章 - マクロの自動記録 オートフィルタ1 - 7分53秒
オートフィルタの設定、実行、解除の操作を自動記録していきます。
その前提として、Excel2003までの場合と、Excel2007以降の場合では、マクロの自動記録の操作の違いについても説明します。早く操作できるように、何度かマクロの自動記録を実行して、操作に慣れておきましょう。
ログインすると、詳細情報を取得できます
【動画29】 発展1講座第3章 - マクロの自動記録 オートフィルタ2 - 13分37秒
ログインすると、詳細情報を取得できます
【動画30】 発展1講座第3章 - マクロの自動記録 フォントの設定 - 19分1秒
また、マクロで登場する「Withブロック」についても説明します。
ログインすると、詳細情報を取得できます
【動画31】 発展1講座第3章 - マクロの自動記録 カラーインデックス - 3分4秒
ログインすると、詳細情報を取得できます
【動画32】 発展1講座第3章 - マクロの自動記録 アンダースコア - 9分54秒
この状態のままでは、可読性も低いので、まずは、自動改行されたプログラムを一行にして、一行の長いプログラムを改行していく作業が必要になります。タブでずらしてレイアウトを調整すると、さらに見やすくなります。
ログインすると、詳細情報を取得できます
【動画33】 発展1講座第3章 - マクロの自動記録 途中改行1 入力支援機能 - 10分51秒
ログインすると、詳細情報を取得できます
【動画34】 発展1講座第3章 - マクロの自動記録 途中改行2 - 9分1秒
ログインすると、詳細情報を取得できます
【動画35】 発展1講座第3章 - マクロの自動記録 並べ替え - 12分13秒
ログインすると、詳細情報を取得できます
【動画36】 発展1講座第3章 - マクロの自動記録 個人用マクロブック - 6分44秒
ログインすると、詳細情報を取得できます
【動画37】 発展1講座第4章 - 論理演算子 イントロダクション - 7分33秒
はじめに、下記の論理演算子について説明します。
And(積集合):演算子の左の条件が合う、かつ、右の条件が合っていれば True、そうでなければ False を返す
Or(和集合) :演算子の左の条件が合う、または、右の条件が合っていれば True、そうでなければ False を返す
Not(補集合):演算子の条件が合わなければ True、そうでなければ False を返す
ログインすると、詳細情報を取得できます
【動画38】 発展1講座第4章 - 論理演算子 解説 - 10分48秒
条件Aと条件Bに対して、
A And B
A Or B
Not(A or B)
それぞれの結果をみていきます。
ログインすると、詳細情報を取得できます
【動画39】 発展1講座第4章 - 構造文 イントロダクション - 1分12秒
ログインすると、詳細情報を取得できます
【動画40】 発展1講座第4章 - For Each構文 イントロダクション1 - 8分7秒
For Each構文は、「コレクション」の各要素を、ひとつずつ「順番に取り出して」処理していく、くり返し構文です。
エクセルマクロでは、下記のオブジェクトのコレクションが登場します。
セル:Range(""A2"")、ワークシート:Worksheets(""Sheet1"")、グラフ:Charts(""Chart3"")、ワークブック:Workbooks(""Book1.xls"") など。
ログインすると、詳細情報を取得できます
【動画41】 発展1講座第4章 - For Each構文 イントロダクション2 - 13分31秒
キモは、
Dim 変数(ニックネーム) As データ型
For Each 変数(ニックネーム) In コレクション
変数の宣言をするときのデータ型は「単数形」になり、
For Each構文の In の後のコレクションは「複数形」になります。
ログインすると、詳細情報を取得できます
【動画42】 発展1講座第4章 - For Each構文 イントロダクション3 - 6分23秒
ログインすると、詳細情報を取得できます
【動画43】 発展1講座第4章 - For Each構文 演習 - 8分2秒
「ハナコのステップ」に従って、すべてのシートの色を変更するマクロを書いていきましょう。
まずは、「お団子を作る」。ひとつのシートの色を変更するマクロを書きます。
それから「ハナコのステップ」
・箱を作る
・中に入れる
・加工する
これで完成です。
変数をいろいろ変えながら、For Each構文を書いてみてください。
ログインすると、詳細情報を取得できます
【動画44】 発展1講座第4章 - For Each構文 伝票作成マクロ解説 - 5分27秒
データのシート「main」と、伝票の雛型のシート「main1」があります。「伝票作成」ボタンを押すと、取引先ごとの伝票がシート別に作成され、「伝票消去」ボタンで、作成された伝票のシートが削除されていきます。
「伝票消去」のマクロは、For Each構文で、すべてのシートをひとつずつ調べていき、シート名の先頭が「main」でなければ、そのシートを削除します。すべてのシートを調べ、処理を実行するなどといったケースでは、For Each構文はとても便利です。
ログインすると、詳細情報を取得できます
【動画45】 発展1講座第4章 - For Each構文 セルのコレクション - 3分51秒
この範囲のセルをひとつずつ取ってきて、調べ、「値が40以上」という条件を満たせば処理を実行していきます。
ログインすると、詳細情報を取得できます
【動画46】 発展1講座第4章 - For Each構文 カンニングペーパー - 5分16秒
ログインすると、詳細情報を取得できます
【動画47】 発展1講座第4章 - Do Loop構文 概要 - 6分55秒
例えば、桁数がバラバラの数字を「No-数字4桁」の文字列にしたい場合です。次回、Do Loop構文を使って、この作業をマクロで書いていきます。
ログインすると、詳細情報を取得できます
【動画48】 発展1講座第4章 - Do Loop構文 マクロの流れ - 9分4秒
数字の文字数を調べ、4文字未満であれば数字の先頭に 0 をつけていき、文字数が4文字になるまで処理をくり返します。
Do Whileという構文が出てきますが、これは、「その後の条件が満たされている間は、Loop に挟まれた内容をくり返す」という構文です。
ログインすると、詳細情報を取得できます
【動画49】 発展1講座第4章 - Do Loop構文 4つのパターン - 11分22秒
[1]
Do While 条件
Loop
[2]
Do Until 条件
Loop
[3]
Do
Loop While 条件
[4]
Do
Loop Until 条件
ログインすると、詳細情報を取得できます
【動画50】 発展1講座第4章 - Do Loop構文 マクロの強制終了 - 4分22秒
永久ループにはまった場合、マクロを強制終了してループから抜け出す方法を説明します。
ログインすると、詳細情報を取得できます
【動画51】 発展1講座第4章 - Exit For、Exit Do、Exit Sub - 9分50秒
ログインすると、詳細情報を取得できます
【動画52】 発展1講座第4章 - Select Case 概要 - 4分36秒
例えば、営業成績の数値に基づいて段階的に評価を入力していくような場合、Select Case構文を活用できます。
営業成績の平均の数値によって、下記のように評価します。
・105以上は「超優良店舗」
・100以上、105未満は「優良店舗」
・ 95以上、100未満は「やや問題」
・ 95未満は「一層努力」
まずは、マクロを見ていきましょう。
ログインすると、詳細情報を取得できます
【動画53】 発展1講座第4章 - Select Case If文との比較 - 2分56秒
Select Case構文では、Select Case の後の Range("I2").Value が比較対象だとわかりやすいのに比べ、If文では、比較対象である Range("I2").Value が何度も登場し、非常にわかりにくくなります。
同じ比較対象に対して、何度も比較をしていくときは、Select Case構文が有効です。
ログインすると、詳細情報を取得できます
【動画54】 発展1講座第4章 - Select Case 比較する条件の順番 - 3分8秒
Select Case の後ろに比較したいもの、そして、End Select と書きます。これがセットで、中身を入れるための入れ物になります。その中に、「Case Is 条件」と書いて、比較する条件をいくつか並べていき、最後にすべての条件に合致しないときのための「Case Else」を書きます。
ログインすると、詳細情報を取得できます
【動画55】 発展1講座第4章 - Select Case 複数条件の並べ方 - 6分39秒
比較対象のデータをカテゴリーに分けて、カテゴリー別に処理をするといった場合に、Select Case構文は便利です。Select Case構文は、「,」で区切って複数の条件を並べることができます。条件のどれかを満たせばその後に書かれた内容を実行します。
ログインすると、詳細情報を取得できます
【動画56】 発展1講座第4章 - Select Case 条件の範囲選択 - 1分33秒
Case 0 To 3
Case 4 To 5
「,」で条件を並べるよりも簡単ですので、ぜひ活用してください。
ログインすると、詳細情報を取得できます
【動画57】 発展1講座第5章 - Sub プロシージャの分割と呼び出し - 9分5秒
取引データの取引金額の大きい方から順位をつけていく作業を例にとると、
[1] NumberA : 取引データにID番号をつける
[2] SortG : 取引金額の並べ替えを行う
[3] NumberH : 取引金額の大きい方から順位をつける
[4] SortA : データをID番号順に並べ替える(元のID番号順に戻す)
上記のように、それぞれの作業ごとに、合計4つのマクロを書きます。最後に、4つのマクロを順に実行していくマクロを書きます。マクロの中で別のマクロ名を書くと、そのマクロを呼び出すことができます。
ログインすると、詳細情報を取得できます
【動画58】 発展1講座第5章 - Sub プロシージャを分割するメリット - 12分16秒
・全体の流れが分かりやすくなる
・メンテナンスが容易になる
・部品化されたものを他Subプロシージャも利用できる
分割したマクロをひとつのマクロとして書くこともできますが、分割したマクロに対して、どんな作業かわかるような名前をつけておくことが大事です。
ログインすると、詳細情報を取得できます
【動画59】 発展1講座第5章 - ステップアウト、ステップオーバー - 5分56秒
ログインすると、詳細情報を取得できます
【動画60】 発展1講座第5章 - モジュールレベル変数 - 7分49秒
ログインすると、詳細情報を取得できます
【動画61】 発展1講座第5章 - モジュールレベル変数の操作 - 2分26秒
ログインすると、詳細情報を取得できます
【動画62】 発展1講座第5章 - モジュールレベル変数 変数の重複 - 5分42秒
ログインすると、詳細情報を取得できます
【動画63】 発展1講座第5章 - モジュールレベル変数 まとめ - 1分37秒
・モジュールレベル変数は、Option Explicitの後、かつ、最初に出てくるサブプロシージャより前のエリアで宣言することができます。
・モジュールレベル変数は、同一モジュール内のすべてのサブプロシージャからアクセスが可能です。
ログインすると、詳細情報を取得できます
【動画64】 発展1講座第5章 - モジュールレベル変数 アクセシビリティ設定 - 8分55秒
ログインすると、詳細情報を取得できます
この講座は有料です

本講座の動画一覧
-
【動画1】 発展1講座イントロダクション - 使用するファイル、PDFの確認
-
【動画2】 発展1講座イントロダクション - デバッグ イミディエイトウィンド
-
【動画3】 発展1講座第1章 - オープニング 第1章1
-
【動画4】 発展1講座第1章 - オープニング 第1章2
-
【動画5】 発展1講座第1章 - データの「型」1
-
【動画6】 発展1講座第1章 - データの「型」2
-
【動画7】 発展1講座第1章 - 変数の初期値
-
【動画8】 発展1講座第1章 - ハンガリアン記法
-
【動画9】 発展1講座第1章 - 変数宣言の強制1
-
【動画10】 発展1講座第1章 - 変数宣言の強制2
-
【動画11】 発展1講座第1章 - 総称オブジェクト型
-
【動画12】 発展1講座第1章 - 固有オブジェクト型
-
【動画13】 発展1講座第1章 - バリアント型
-
【動画14】 発展1講座第2章 - オープニング 第2章
-
【動画15】 発展1講座第2章 - コレクション
-
【動画16】 発展1講座第2章 - コレクション(インデックス)
-
【動画17】 発展1講座第2章 - コレクション(インデックス)の具体例
-
【動画18】 発展1講座第2章 - プロパティ 従属要素のオブジェクト
-
【動画19】 発展1講座第2章 - プロパティ 上位のオブジェクト
-
【動画20】 発展1講座第2章 - プロパティ 同レベルのオブジェクト
-
【動画21】 発展1講座第2章 - プロパティ 値として表現できるデータ
-
【動画22】 発展1講座第2章 - プロパティ Offset
-
【動画23】 発展1講座第2章 - プロパティ Offsetの使い方
-
【動画24】 発展1講座第2章 - End プロパティの使い方
-
【動画25】 発展1講座第2章 - メソッド1
-
【動画26】 発展1講座第2章 - メソッド2
-
【動画27】 発展1講座第3章 - マクロの自動記録 イントロダクション
-
【動画28】 発展1講座第3章 - マクロの自動記録 オートフィルタ1
-
【動画29】 発展1講座第3章 - マクロの自動記録 オートフィルタ2
-
【動画30】 発展1講座第3章 - マクロの自動記録 フォントの設定
-
【動画31】 発展1講座第3章 - マクロの自動記録 カラーインデックス
-
【動画32】 発展1講座第3章 - マクロの自動記録 アンダースコア
-
【動画33】 発展1講座第3章 - マクロの自動記録 途中改行1 入力支援機能
-
【動画34】 発展1講座第3章 - マクロの自動記録 途中改行2
-
【動画35】 発展1講座第3章 - マクロの自動記録 並べ替え
-
【動画36】 発展1講座第3章 - マクロの自動記録 個人用マクロブック
-
【動画37】 発展1講座第4章 - 論理演算子 イントロダクション
-
【動画38】 発展1講座第4章 - 論理演算子 解説
-
【動画39】 発展1講座第4章 - 構造文 イントロダクション
-
【動画40】 発展1講座第4章 - For Each構文 イントロダクション1
-
【動画41】 発展1講座第4章 - For Each構文 イントロダクション2
-
【動画42】 発展1講座第4章 - For Each構文 イントロダクション3
-
【動画43】 発展1講座第4章 - For Each構文 演習
-
【動画44】 発展1講座第4章 - For Each構文 伝票作成マクロ解説
-
【動画45】 発展1講座第4章 - For Each構文 セルのコレクション
-
【動画46】 発展1講座第4章 - For Each構文 カンニングペーパー
-
【動画47】 発展1講座第4章 - Do Loop構文 概要
-
【動画48】 発展1講座第4章 - Do Loop構文 マクロの流れ
-
【動画49】 発展1講座第4章 - Do Loop構文 4つのパターン
-
【動画50】 発展1講座第4章 - Do Loop構文 マクロの強制終了
-
【動画51】 発展1講座第4章 - Exit For、Exit Do、Exit Sub
-
【動画52】 発展1講座第4章 - Select Case 概要
-
【動画53】 発展1講座第4章 - Select Case If文との比較
-
【動画54】 発展1講座第4章 - Select Case 比較する条件の順番
-
【動画55】 発展1講座第4章 - Select Case 複数条件の並べ方
-
【動画56】 発展1講座第4章 - Select Case 条件の範囲選択
-
【動画57】 発展1講座第5章 - Sub プロシージャの分割と呼び出し
-
【動画58】 発展1講座第5章 - Sub プロシージャを分割するメリット
-
【動画59】 発展1講座第5章 - ステップアウト、ステップオーバー
-
【動画60】 発展1講座第5章 - モジュールレベル変数
-
【動画61】 発展1講座第5章 - モジュールレベル変数の操作
-
【動画62】 発展1講座第5章 - モジュールレベル変数 変数の重複
-
【動画63】 発展1講座第5章 - モジュールレベル変数 まとめ
-
【動画64】 発展1講座第5章 - モジュールレベル変数 アクセシビリティ設定
コメント紹介
もっと見る