「エクセルマクロ・VBA発展編1」講座と演習

「エクセルマクロ・VBA発展編1」講座と演習

こんな方向けの講座です

  • エクセルマクロ・VBA基礎編を修了した方
  • For Next構文、If文を組み合わせたマクロを実務でも活用できている方
  • 抽象概念やプログラムの中身についての知識に限界感がある方
  • 自動記録機能で作ったマクロを見てもどこをどう手直しすれば欲しいマクロになるか分からない方
  • エクセルのセル内のデータだけでなく、グラフやピボットテーブル、オートシェイプ等もマクロで操作したい方
  • 手元にやってくるのがぐちゃぐちゃなデータばかりで、それらを手作業で整理するところから仕事がはじまることが多い方
  • 大がかりな仕組みを作ろうとすると、以下の問題が生じる方
    • ロジックが破綻して、どうしても解決しないエラーが残る
    • くり返し同じようなことを書いている箇所が続き、読みにくい、改変が大変
    • 自分で読み返してもどこでどういう処理をしているのか分かりにくい

こんな趣旨の講座です

  • For Next構文、If文だけでなく、より高度な構造文も状況によって使い分けられるようになる。
  • 正確な抽象概念の理解に基づいて、複雑な処理を実現するマクロも簡単、簡潔に書けるようになる。
  • 自動記録機能で作ったマクロを自由に編集できるようになる。
  • 元データがぐちゃぐちゃでもほとんど手作業での整形なしでマクロを使って仕事をできる。
  • エクセルのセル内のデータだけでなく、グラフやピボットテーブル、オートシェイプ等もマクロで操作できるようになる。
  • 高度な仕組み・大がかりな仕組みを作っているときでも、自然に、以下のような品質のプログラムになる。
    • ロジックが破綻しない
    • くり返し同じようなことを書かないで済むようになる
    • あとから読んで読みやすい、修正しやすいプログラムに仕上げられる

この講座で得られること

  • 抽象概念

    • データ型とオブジェクト型
    • コレクションとインデックス
    • プロパティの概念の拡張
    • メソッド
    • 構文に対する深い理解
    • 部品化
  • プログラムの中身

    • データ型
    • オブジェクト型
    • Range型
    • メソッド
    • 自動記録で作ったマクロの編集
    • 論理演算子
    • for each構文、do loop構文、select case構文
    • With ステートメント
    • サブプロシージャの分割
    • モジュールレベル変数
    • 別モジュールにある変数、プログラムの連携
  • Visual Basic Editorの機能

    • 変数の宣言を強制する
    • 各種の入力支援機能
    • やや高度なテストの方法
    • ステップアウト、ステップオーバー
  • 組み立てのノウハウ

    • ハンガリアン記法
    • より高度な抽象概念を活用できる、より簡単なマクロの書き方のパターン(アルゴリズム)
  • 早さと正確さ

    • 自動記録を正確に行うための注意点
    • プログラムの整形、可読性向上、高度な編集に関わるショートカットキー操作

実務での利用シーン

  • 以下のようなデータを扱うときでも、一部手作業は発生するが、あとはほんとどマクロを使って処理してしまう。

    • 処理件数が毎回異なる
    • 表記が不統一なデータが混在している
    • ファイルごと、シートごとにデータの所在が異なる
  • 提案書や月例報告書などに添付するグラフやピボットテーブル、オートシェイプ等もマクロで一括編集して業務を進める。

  • 自分の上流工程・下流工程で行われている業務の効率化まで実現できる、大がかりなマクロを書く。
  • 自分用のデータベースを作り、そのデータベースにデータを蓄積する仕組みや、上司や取引先からの都度の要請にあわせてさらっ-とマクロを書いてレポートを作成する。

こんな楽しみを得られます

  • 導入編~基礎編のころとはまた異なる、成果に裏打ちされた、「自分は仕事がデキる」という自信
  • ここまでさらさら高度なマクロを書ける人は、システム部門を含めて探しても、社内でも稀。
  • マクロを書くのが楽しくて仕方がない。
  • 「コピペに振り回されていた私の人生は、はっきり言って10年くらい無駄だった」と心から嘆かわしくなる。
  • でも、相変わらずコピペ三昧で死にそうになっている同僚を見ると、「マクロを知ることができてよかった」と、改めて思う。
  • 同僚の仕事をしている様子が「止まっているかのように見える」

周囲からこんな風に見られます

  • 業務内容に変化があっても、お願いすれば翌日には対応するマクロは修正済み。多額の費用がかからないばかりか返事一つでやってくれるので、お願いする側からするととてもありがたい存在(を通りこして、いないと困る人になりつつある)。
  • 「複数部門が絡む大がかりなプロジェクトに関わってもらいたい人材」として、どこかで密かにリストアップされている。
  • システム開発をシステム部門に依頼したり外注したりする際の窓口として矢面に立たさせれる。
  • 仕組み化、効率化の専門家として重宝され、オペレーションに大きな変更をする前に真っ先に相談されるようになる。
  • 「IT系の勉強をもっとしたい」とあなたが申し出てきたとしたら積極的に支援してあげたいと思われる。
  • 「つまらない仕事はさせたくない人」になる。必然的に、深みのある仕事、重要な仕事にじっくり取り組む機会が増える。くだらない要件でむやみに呼び出されなくなる。
  • 「ぐちゃぐちゃな仕事を整理してくれる、頭のいい人」とみなされる。

講座開発者からひとこと

基礎編レベルのことを理解できると、ある程度の成果は出せるようになります。
得意なパターン、ハマると大きな成果を出せるパターンのようなものもできてきます。
しかし、処理が複雑なマクロを書いたり、大がかりな処理をするマクロを書き上げたりするのはまだまだ大変です。
マクロを書き始めのころの僕もそんな壁にぶつかりました。
この壁を超えるには、もう一歩上のレベルの抽象概念の理解と、その抽象概念がエクセルVBAの世界ではどのように表現されているのかの理解の2つが大切です。
この壁を越えると、マクロのおもしろさもまた深まります

基礎編のあと実務でマクロを書いたりフォロー動画を7個~8個くらいはしっかりやってきたという方なら、バンバン楽しく理解できます。
頭の中がかなり抽象的になってくると、その分、技がキマったときの破壊力も抜群です。
フォロー演習では、かなり大がかりなプログラムの開発も事例としてばんばんでてきます。大いに楽しみにしていてください。

発展1講座イントロダクション - 使用するファイル、PDFの確認

講座で使用するPDFとデータの確認です。

講座内で使用するデータはこの動画内でダウンロードできます。

発展1講座イントロダクション - デバッグ イミディエイトウィンド

プログラミングとテストの手法のうち、デバッグについて説明します。
マクロをテストする方法で、イミディエイトウィンドに出力するという方法があります。
変数の中身をチェックしたり、For next構文で、今、何行目を実行しているかを出力し、確認することができます。
また、If文で指定した条件で処理したデータのうち、そのデータの氏名をイミディエイトウィンドに書き出すことができます。
とても便利なテスト方法ですので、ぜひここで覚えてください。

発展1講座第1章 - オープニング 第1章1

第1章では「データの型」と「変数」について説明します。

基礎編でも学びましたが、変数を作るときの細かいテクニックなど、もう少し掘り下げて学んでいきます。

発展1講座第1章 - オープニング 第1章2

変数には「一般のデータ」型(名前のついた箱)と「オブジェクト」型(ニックネーム)があります。
基礎編では、「Dim Ziritsu」などと変数を宣言しましたが、これはデータ型の変数となります。
この章では、データ型のさまざまな条件設定について学んでいきます。

発展1講座第1章 - データの「型」1

変数宣言時に、データ型を指定する方法について説明します。

見積書の所定のセルに、「お見積額合計」という文字と、「合計金額」の値を入力するマクロです。
変数宣言時にデータ型を指定していないとき、変数に間違えて違う型の値を入れていてもマクロは実行されてしまいます。
そこで、変数宣言時に、データ型を指定することによって、あり得ない取り違いを防ぐことができます。

発展1講座第1章 - データの「型」2

下記の「データ」型について説明していきます。
「As String 文字列型」
「As Date 日付型」
「As Long 長整数型」
「As Double 倍精度浮動小数型」
「As Boolean ブール型」

発展1講座第1章 - 変数の初期値

変数の初期値について説明します。
変数は指定した「データ」型によって、変数を設定した段階で、初期値が自動的に決まるようになっています。

発展1講座第1章 - ハンガリアン記法

変数のネーミングルール、「ハンガリアン記法」について説明します。
例えば、Date型の変数なら、「Dim dFinal As Date」と変数の前に[d]、
文字列のString型なら、Dim sCompany As Stringと変数の前に[s]をつけるやり方です。

発展1講座第1章 - 変数宣言の強制1

Option Explicitの言葉の意味について説明します。
これは、プログラムを書くときに、「変数の宣言を強制する」というメッセージです。

発展1講座第1章 - 変数宣言の強制2

前回の「変数の宣言を強制する」ということについて、もう少し掘り下げていきます。

Option Explicit があると、変数の宣言は、「しなくてはならない」ですが、
Option Explicit がないと、変数の宣言は、「してもしなくてもよい」となります。
「してはならない」ではありませんので注意してください。

発展1講座第1章 - 総称オブジェクト型

オブジェクト型には、「固有オブジェクト型」と「総称オブジェクト型」というものがあります。
ここでは総称オブジェクト型から説明します。
簡単にいうと、オブジェクトにニックネームを設定して、そのニックネームを使ってオブジェクトを操作することができるというものです。

発展1講座第1章 - 固有オブジェクト型

固有オブジェクト型について説明します。

総称オブジェクト型 As Object は、セル、シート、ファイル、図形など、どんなオブジェクトにも使えます。
それに対し固有オブジェクト型は、より細かいオブジェクトの指定ができます。
As Range で作った変数は、セルに対してニックネームを使用することができますが、セル以外のオブジェクトに対して使用しようとするとエラーが出ます。

発展1講座第1章 - バリアント型

バリアント型で変数を宣言すると、一般のデータ型(名前の付いた箱)としても使用できるし、オブジェクト型(ニックネーム)としても使えます。
「なんでもOK」と宣言することになります。

発展1講座第2章 - オープニング 第2章

第2章はオブジェクトについて学習していきます。

オブジェクトの状態を変えることを、「プロパティを『設定する』」、といいます。
オブジェクトの状態を調べることを、「プロパティを『取得する』」、といいます。

この章では、プロパティという概念とは違う、「メソッド」という概念についても話していきます。
プロパティとメソッドを含めて「メンバー」という言葉もあります。

発展1講座第2章 - コレクション

コレクションという概念について説明します。
コレクションとは、「同じタイプのオブジェクトの集合体」のことです。
エクセルマクロで登場するコレクションは、
セル、図形、コメント、行、ワークシート、ブックなどです。

発展1講座第2章 - コレクション(インデックス)

コレクション(インデックス)について学びます。

これまでWorksheets("Sheet1")と書いてきたのが、ここで説明する「コレクション(インデックス)」のことです。インデックスの部分には、名前か数字を指定できます。

Worksheets("Sheet1") では、
Worksheets がコレクション、Sheet1がインデックスということです。

発展1講座第2章 - コレクション(インデックス)の具体例

コレクション(インデックス)の具体例を見ていきます。

Worksheets("GetEnd1").Tab.Color = vbRed
すべてのシートの集合体の中のシート「GetEnd1」のタブの色を vbRed にする。

Worksheets(3).Tab.Color = vbBlue
すべてのシートの集合体の中の「前から3番目」のシートのタブの色を vbBlue にする、です。
インデックスに数字を指定することもできます。

発展1講座第2章 - プロパティ 従属要素のオブジェクト

メンバーには、「プロパティ」「メソッド」という2つの概念があります。
ここでは、これまで学んできた「プロパティ」についてもう少し掘り下げていきます。

基礎編レベルでは、プロパティは「『値』として表現できるデータのことを指してきましたが、プロパティは、あるオブジェクトと関係するオブジェクトを指すこともできます。
たとえば、従属要素のオブジェクトはプロパティ足り得ます。

発展1講座第2章 - プロパティ 上位のオブジェクト

上位にあるオブジェクトもプロパティとなります。

セルから見て上位にあるシートも、セルのプロパティとなります。シートから見たファイルも同様です。
つまり、階層構造の下にも、上に行くときも、プロパティという言い方ができます。

発展1講座第2章 - プロパティ 同レベルのオブジェクト

セルとセル、シートとシートなど、同レベルにあるオブジェクトもプロパティとなります。
あるシートの隣にあるシートを調べる、ということができます。

発展1講座第2章 - プロパティ 値として表現できるデータ

値として表現できるデータについて掘り下げて説明します。
「.Value」プロパティについては、これまで説明してきましたが、ここでは、
合計数を返す「.Count」、セルの行番号を数値で返す「.Row」、セルの列を数値で返す「.Column」というプロパティを紹介します。

発展1講座第2章 - プロパティ Offset

同レベルのオブジェクトを取ってくるプログラム「Offset」を紹介します。

Offsetは、基準になるセルから、あるセルまでの相対的な位置関係を調べたり、取得したりできます。

発展1講座第2章 - プロパティ Offsetの使い方

Offsetの便利な使い方を紹介します。
基礎編のレベルでは、「For Next構文」を使って、行番号を変数に設定して、行の繰り返し処理をすることはできましたが、横方向、列の繰り返し処理はできませんでした。

列の繰り返し処理は、Offsetを使えば可能になります。

もちろん、Offsetを使って、行の繰り返し処理も可能ですし、行、列の繰り返しも可能です。

発展1講座第2章 - End プロパティの使い方

今回は End プロパティについて説明します。
Endプロパティは、指定されたセルが含まれる領域の終端のセルを示す Range オブジェクトを返します。
エクセル上で、[Ctrl]+方向キー(↑、↓、←、→)の操作に相当します。

Endプロパティを使って、データの最終行の行番号を求められますので、毎月データ数が変わるデータを処理する場合などに利用できます。

発展1講座第2章 - メソッド1

プロパティとメソッドを含めてメンバーといいますが、今回は、メソッドについて紹介していきます。

オブジェクトにはプロパティという特徴があるだけじゃなくて、お願いされたことを実行するという機能があります。これがメソッドです。

発展1講座第2章 - メソッド2

メソッドの構文の基本パターン「オブジェクト .メソッド」の形を意識してください。

条件を指定するときは、
「条件名 := 具体的にやってほしいこと」
複数の条件がくるときは、「,」 で区切ることになっています。

メソッドと、プロパティの取得・設定との見分け方についても学んでいきます。

発展1講座第3章 - マクロの自動記録 イントロダクション

エクセルマクロの自動記録について扱います。
マクロの自動記録とは、エクセル上で操作した手順を、そのままマクロのプログラムにしてくれる機能です。

たとえば、オートフィルタ、並べかえ、シートのコピー、グラフ作成など、どうマクロを書けばわからない場合は、マクロの自動記録でプログラムを書いてみます。
ただ、自動記録で書かれたマクロには「独特のクセ」があります。
このクセを理解して、マクロのコードを読めるようになるスキルを身に付ける必要があります。

発展1講座第3章 - マクロの自動記録 オートフィルタ1

マクロの自動記録を実行して、オートフィルタの操作を自動記録した後、プログラムの中身を見ていきましょう。
オートフィルタの設定、実行、解除の操作を自動記録していきます。

その前提として、Excel2003までの場合と、Excel2007以降の場合では、マクロの自動記録の操作の違いについても説明します。
早く操作できるように、何度かマクロの自動記録を実行して、操作に慣れておきましょう。

発展1講座第3章 - マクロの自動記録 オートフィルタ2

前回作った、オートフィルタを作るマクロについて見ていきます。
このマクロはちゃんと動きますが、このまま放置しておくと問題があります。

問題と対処法について具体的に説明していきます。

発展1講座第3章 - マクロの自動記録 フォントの設定

フォントを変更するマクロを自動記録して、マクロの中身を見ていきます。
フォントの変更を自動記録した場合、自分が設定した項目とは違う項目までマクロに記述されます。
不要な部分は、原則、削除しますが、「コメントブロック」ボタンを利用して、コメントアウトする方法について説明します。

また、マクロで登場する「Withブロック」についても説明します。

発展1講座第3章 - マクロの自動記録 カラーインデックス

Excel2003で、マクロの自動記録で色を設定したときに記述される「ColorIndex」について説明します。
エクセルマクロの世界では、主な色には背番号がついています。
その背番号を使って、色を呼び出すことができます。

エクセルマクロでは、「色は数字で呼び出せる」と覚えておいてください。

発展1講座第3章 - マクロの自動記録 アンダースコア

自動記録でマクロを生成した場合、アンダースコア「_ 」が出現する場合があります。
エクセルマクロのプログラムでは、横長になりすぎたプログラムは、「 _ 」(半角スペース + アンダースコア)を挿入して、途中改行することができます。
自動記録で、プログラムが長いと判断されると、この「 _ 」が自動的に挿入されるわけです。

この状態のままでは、可読性も低いので、まずは、自動改行されたプログラムを一行にして、一行の長いプログラムを改行していく作業が必要になります。タブでずらしてレイアウトを調整すると、さらに見やすくなります。

発展1講座第3章 - マクロの自動記録 途中改行1 入力支援機能

途中改行を取って、プログラムを一行にする練習をしていきます。

途中改行を取るショートカットは、 [Back], [Delete], [End]。
いきなりキーボードを触らずに、まずは10回、20回と口で唱えてください。
次に、それぞれのキーを押すイメージを持ちながら、口で唱えてみましょう。

発展1講座第3章 - マクロの自動記録 途中改行2

[Back], [Delete], [End]のショートカットを使って、複数行のマクロを一行に、
[Space], [ _ ], [Enter]のショートカットを使って、一行のマクロを途中改行して複数行のマクロにしていく練習をします。

途中改行した部分を[Tab]でずらして、この部分が一行のマクロとわかるようにレイアウト調整もしておきます。

発展1講座第3章 - マクロの自動記録 並べ替え

Excel2003までのバージョンを使って、自動記録しながら「並べ替え」をしてマクロを生成していきます。
生成された一行のマクロは、「_ 」で途中改行されていますので、前回までに習ったショートカットで直していきます。

注意してほしいのは、自動記録で作ったマクロが「操作を完全に再現できるとは限らない」ということです。
自動記録で生成されたマクロには、変更が必要な場合があるということを覚えていてください。

発展1講座第3章 - マクロの自動記録 個人用マクロブック

個人用マクロブックの説明をします。
個人用マクロブックとは、エクセル起動時に必ず読み込まれるエクセルファイルのことです。
個人用マクロブックを利用する目的として、お気に入りのマクロの部品をため込んでおくと、いつでもモジュールを開いて、マクロをコピーできるので便利です。

発展1講座第4章 - 論理演算子 イントロダクション

第4章は、演算子と構造文の話を中心に進めていきます。

はじめに、下記の論理演算子について説明します。

And(積集合):演算子の左の条件が合う、かつ、右の条件が合っていれば True、そうでなければ False を返す
Or(和集合) :演算子の左の条件が合う、または、右の条件が合っていれば True、そうでなければ False を返す
Not(補集合):演算子の条件が合わなければ True、そうでなければ False を返す

発展1講座第4章 - 論理演算子 解説

論理演算子「And」「Or」「Not」について、実際にマクロを動かしながら解説していきます。

条件Aと条件Bに対して、
A And B
A Or B
Not(A or B)

それぞれの結果をみていきます。

発展1講座第4章 - 構造文 イントロダクション

これから構造文について説明していきます。
基礎編ではくり返しの構造文「For Next」、条件分岐の「If文」という構文が出てきました。

次回以降では、新たに3つの構文、
「For Each構文」「Do Loop構文」「Select Case構文」について学んでいきます。

発展1講座第4章 - For Each構文 イントロダクション1

For Each構文について説明します。
For Each構文は、「コレクション」の各要素を、ひとつずつ「順番に取り出して」処理していく、くり返し構文です。

エクセルマクロでは、下記のオブジェクトのコレクションが登場します。
セル:Range(""A2"")、ワークシート:Worksheets(""Sheet1"")、グラフ:Charts(""Chart3"")、ワークブック:Workbooks(""Book1.xls"") など。

発展1講座第4章 - For Each構文 イントロダクション2

For Each構文の作り方について説明していきます。
キモは、

Dim 変数(ニックネーム) As データ型
For Each 変数(ニックネーム) In コレクション

変数の宣言をするときのデータ型は「単数形」になり、
For Each構文の In の後のコレクションは「複数形」になります。

発展1講座第4章 - For Each構文 イントロダクション3

For Each構文を実際に書いていく前に、Debug.Print を使って、For Each構文のマクロの動き方を見ていきます。

「開いているファイルにあるすべてのワークシート」からシートがひとつずつ取り出され、ニックネームが割り当てられます。その後、処理が実行されます。
ワークシートが割り当てられるたびに、イミディエイトウィンドにシート名が表示されますので、その変化をよく観察してください。

発展1講座第4章 - For Each構文 演習

実際にFor Each構文のマクロを書く演習です。
「ハナコのステップ」に従って、すべてのシートの色を変更するマクロを書いていきましょう。

まずは、「お団子を作る」。ひとつのシートの色を変更するマクロを書きます。

それから「ハナコのステップ」
・箱を作る
・中に入れる
・加工する

これで完成です。
変数をいろいろ変えながら、For Each構文を書いてみてください。

発展1講座第4章 - For Each構文 伝票作成マクロ解説

取引先ごとの伝票を作るマクロです。
データのシート「main」と、伝票の雛型のシート「main1」があります。
「伝票作成」ボタンを押すと、取引先ごとの伝票がシート別に作成され、「伝票消去」ボタンで、作成された伝票のシートが削除されていきます。

「伝票消去」のマクロは、For Each構文で、すべてのシートをひとつずつ調べていき、シート名の先頭が「main」でなければ、そのシートを削除します。
すべてのシートを調べ、処理を実行するなどといったケースでは、For Each構文はとても便利です。

発展1講座第4章 - For Each構文 セルのコレクション

セルのコレクションに対して、For Each構文を使ったマクロを見ていきます。 指定した範囲のすべてのセルを調べていって、一定条件を満たすときだけチェックをするというマクロです。

この範囲のセルをひとつずつ取ってきて、調べ、「値が40以上」という条件を満たせば処理を実行していきます。

発展1講座第4章 - For Each構文 カンニングペーパー

For Each構文は、抽象的でとっつきにくく、オブジェクトの型によって書き方が変わるなど、覚えにくいです。
そこで、実務で活用できるように、カンニングペーパーを用意しています。(マインドマップ P12)
実務で使用するときは、カンニングペーパーを見ながら真似してください。

発展1講座第4章 - Do Loop構文 概要

くり返しの構文「Do Loop構文」は、プログラムを書く段階では、何回繰り返すのか検討がつかない場合によく使われます。
例えば、桁数がバラバラの数字を「No-数字4桁」の文字列にしたい場合です。
次回、Do Loop構文を使って、この作業をマクロで書いていきます。

発展1講座第4章 - Do Loop構文 マクロの流れ

セルの値「9」を「No-0009」という文字列にするマクロを見ていきます。
数字の文字数を調べ、4文字未満であれば数字の先頭に 0 をつけていき、文字数が4文字になるまで処理をくり返します。

Do Whileという構文が出てきますが、これは、「その後の条件が満たされている間は、Loop に挟まれた内容をくり返す」という構文です。

発展1講座第4章 - Do Loop構文 4つのパターン

Do Loop構文には下記の「4つのパターン」がありますので、順に説明します。

[1]
Do While 条件
Loop

[2]
Do Until 条件
Loop

[3]
Do
Loop While 条件

[4]
Do
Loop Until 条件

発展1講座第4章 - Do Loop構文 マクロの強制終了

Do Loop構文でよくある失敗は、くり返しを指定する条件をちゃんと書けなくて、永久に Do 〜 Loop から抜け出せなくなるようなマクロを書いてしまうことです。

永久ループにはまった場合、マクロを強制終了してループから抜け出す方法を説明します。

発展1講座第4章 - Exit For、Exit Do、Exit Sub

くり返しの構文で、即座にループの終わりまで移動する「Exit For」と「Exit Do」、即座に End Sub まで飛ぶ「Exit Sub」について説明します。

発展1講座第4章 - Select Case 概要

Select Case構文について説明します。

例えば、営業成績の数値に基づいて段階的に評価を入力していくような場合、Select Case構文を活用できます。
営業成績の平均の数値によって、下記のように評価します。
- 105以上は「超優良店舗」
- 100以上、105未満は「優良店舗」
- 95以上、100未満は「やや問題」
- 95未満は「一層努力」

まずは、マクロを見ていきましょう。

発展1講座第4章 - Select Case If文との比較

If文で書かれたマクロと、Select Case構文で書かれたマクロを比較してみると、

Select Case構文では、Select Case の後の Range("I2").Value が比較対象だとわかりやすいのに比べ、
If文では、比較対象である Range("I2").Value が何度も登場し、非常にわかりにくくなります。

同じ比較対象に対して、何度も比較をしていくときは、Select Case構文が有効です。

発展1講座第4章 - Select Case 比較する条件の順番

Select Case構文のマクロの書き方について説明します。

Select Case の後ろに比較したいもの、そして、End Select と書きます。
これがセットで、中身を入れるための入れ物になります。
その中に、「Case Is 条件」と書いて、比較する条件をいくつか並べていき、最後にすべての条件に合致しないときのための「Case Else」を書きます。

発展1講座第4章 - Select Case 複数条件の並べ方

Select Case構文の便利な使い方の例を紹介します。
比較対象のデータをカテゴリーに分けて、カテゴリー別に処理をするといった場合に、Select Case構文は便利です。
Select Case構文は、「,」で区切って複数の条件を並べることができます。条件のどれかを満たせばその後に書かれた内容を実行します。

発展1講座第4章 - Select Case 条件の範囲選択

Select Case構文の便利な使い方として、Case の後に「To」を使って、条件の範囲を選択することができます。

Case 0 To 3
Case 4 To 5

「,」で条件を並べるよりも簡単ですので、ぜひ活用してください。

発展1講座第5章 - Sub プロシージャの分割と呼び出し

Subプロシージャの分割と呼び出しについて学んでいきます。

取引データの取引金額の大きい方から順位をつけていく作業を例にとると、
[1] NumberA : 取引データにID番号をつける
[2] SortG : 取引金額の並べ替えを行う
[3] NumberH : 取引金額の大きい方から順位をつける
[4] SortA : データをID番号順に並べ替える(元のID番号順に戻す)

上記のように、それぞれの作業ごとに、合計4つのマクロを書きます。
最後に、4つのマクロを順に実行していくマクロを書きます。
マクロの中で別のマクロ名を書くと、そのマクロを呼び出すことができます。

発展1講座第5章 - Sub プロシージャを分割するメリット

マクロを分割して書くメリットは、大きく下記の3つです。

・全体の流れが分かりやすくなる
・メンテナンスが容易になる
・部品化されたものを他Subプロシージャも利用できる

分割したマクロをひとつのマクロとして書くこともできますが、分割したマクロに対して、どんな作業かわかるような名前をつけておくことが大事です。

発展1講座第5章 - ステップアウト、ステップオーバー

連携したマクロのテストのテクニック、
ステップアウト([Ctrl]+[Shift]+[F8])とステップオーバー([Shift]+[F8])について説明します。

発展1講座第5章 - モジュールレベル変数

分割したマクロで、ほぼ同じようなプログラムがある場合は、モジュールレベル変数を利用するとひとつにまとめることができます。
モジュールレベル変数は、Option Explicitの後、かつ、最初に出てくるサブプロシージャより前のエリアで宣言します。

発展1講座第5章 - モジュールレベル変数の操作

モジュールレベル変数を宣言して、実際に操作してプログラムの動きを確認していきます。
何回か繰り返し実行してみてください。

発展1講座第5章 - モジュールレベル変数 変数の重複

変数の重複の問題について説明します。
モジュールレベル変数と同じ名前の変数をサブプロシージャの中で宣言すると、モジュールレベル変数よりも、サブプロシージャの中にある変数が優先されてしまいます。

発展1講座第5章 - モジュールレベル変数 まとめ

モジュールレベル変数のまとめです。

  • モジュールレベル変数は、Option Explicitの後、かつ、最初に出てくるサブプロシージャより前のエリアで宣言することができます。
  • モジュールレベル変数は、同一モジュール内のすべてのサブプロシージャからアクセスが可能です。

発展1講座第5章 - モジュールレベル変数 アクセシビリティ設定

別モジュールからのアクセシビリティ設定について説明します。
別モジュールの変数を呼び出して利用したいという時は、サブプロシージャの場合は、「Sub 〜」の前に Public を付けて、変数の場合は、「Dim 変数 As 〜」の Dim を Public に変えて、「Public 変数 As 〜」と宣言します。
反対に、頭に「Private」と書くと、他のモジュールから呼び出すことができません。

講座の詳細

講座の進め方

公開講座

  • 「エクセルマクロ・VBA発展編1」講座と演習はテキストに沿って説明するだけの座学ではありません。
    高度な抽象概念を学ぶ必要から、基礎編同様、ワーク中心の、頭と体を最大限に活用した講義を実施しています。

img_hatten1_002 手書きのワーク。パソコン上では分かりにくいことも、自筆で手書きすると一発で理解できます。
img_hatten1_003 発展編1での恒例のワーク、名札交換ゲーム。具体的な動きを使って抽象概念について学びます。
img_hatten1_004 ワークの輪には、講師の小川も参加します。プラスアルファな知識を得られることも。

講座の進め方

オンライン講座

  • 公開講座の収録映像ではありません。
    オンライン講座の受講生のためだけに撮り下ろしたオリジナルの動画セミナーです。
    オンライン講座のメリットを最大限に、デメリットを最小限にするべく、徹底して作り込んでいます。

  • 公開講座と異なり、「どこまで説明すれば受講生の方が理解できるのか」を教えながら確認する方法がありません。
    その点を補うべく、重要なことについては手を変え品を変え、しつこいくらいに別の角度からもくり返し解説しています。

  • 公開講座と同様、オンライン講座にもワークを多く用意しています。
    ワークは、あなたにやっもらうだけの宿題ではありません。達人養成塾の小川も動画の中で実際に解きます。いっしょに演習しましょう。

  • 一本一本の動画の再生時間は、受講生の集中力が続く数分~15分程度の短い時間にしています。
    動画講座という環境に配慮し、公開講座であれば一気に説明しきってしまえるようなことでも細切れの内容に再整理してお伝えするためです。

  • 質問は数分~15分程度の動画一本一本の内容に対して気軽にできます。
    また、各動画で過去にあった質問と達人養成塾からの回答は、すべて閲覧可能です。

教材の構成

2013/11/1現在。
公開講座とオンライン講座で構成や各資料のページ数が微妙に異なることがあります

☆発展編1マインドマップレジュメ(12枚)
講座で主に使用する資料です。テキストのダイジェスト版です。

☆発展編1ワーク資料レジュメ(7枚)
講座全体の構成図、抽象概念を理解するための補助資料等。
講座で一部を使用します。

☆発展編1演習解説資料レジュメ(10枚)
講座後半で扱う演習問題を解く際の考え方と作業の進め方。
演習後の各自での復習用資料です。

☆エクセルマクロ・VBA発展編1 テキスト(162ページ)
エクセルマクロのプログラムの中身について解説したテキストです。
マクロを書くことを車の運転に例えれば、「るるぶ信州」のようなドライブガイド本に相当します。
講座中に開くことはありませんが、講座受講後に頭から読んでいくとよい復習になります。

☆発展編1サンプルデータ
講座で使用するサンプルデータ等。エクセルファイル、CSVファイル等の形式で提供します。
そのままコピーして業務に使えるサンプルも多数収録しています。

img_hatten1_005 発展編1は基礎編に比べて資料点数は少なめです。
img_hatten1_006 発展編1のテキスト。図版を多用し、講義を忠実に再現しています。(オンライン講座ではPDFファイル)
img_hatten1_007 講義内容を要約したマインドマップ。「復習するときにも持ち運びしやすい」と好評です。

講座の所要時間と講師

  • 公開講座: 約9時間(小川が直接指導)
  • オンライン講座: 動画64本、再生時間合計463分56秒

フォローセミナー

この講座には、以下のフォローセミナーが無料でつきます。

  • 発展編1フォローアップセミナー
    演習問題と解説。全30回 A4用紙 359枚相当 メールセミナー
  • 発展編1フォローアップ動画セミナー
    演習問題と解説。全12回 総再生時間143分24秒 動画講座
  • 発展編1伝票作成マクロ動画セミナー
    演習問題と解説。全15回 総再生時間 116分03秒 動画講座

サポート

この講座には、無料サポートがつきます。
サポートでは、講座内容に限らず、実務でマクロを書いているときに生じた疑問等にもお答えいたします。
受講された講座でお伝えしている知識の範囲を大きく超える問題については、お答えできない場合もありますが、困ったことがあったときには、まずは相談してください。
どんどん活用してください。
サポート期間は無期限です。
(サポートのより詳しい内容については サポートについて をご覧ください)

学習時間目安

エクセルマクロ・VBA発展編1とフォローセミナーを含めた標準の学習時間は以下のとおりです。

  • 公開講座: 40時間
    講義受講時間、動画再生時間、演習問題に各自で取り組む時間を含む
  • オンライン講座: 40時間
    動画再生時間、演習問題に各自で取り組む時間を含む

特典

この講座を受講される方には、以下の特典が無料でつきます。
受講後に送られるメールにてダウンロードリンクをお知らせします。

  • 小冊子「Windows 誰も知らない12の超効率化技」
    PDFファイル143ページ
  • ツール「個人情報、取引情報変換プログラム」
    エクセルファイル
  • 冊子&サンプルデータ「Excelマクロとデータベース関数の連携例」
    PDFファイル31ページとサンプルデータ

用意するもの

  • 公開講座:

    • エクセルのインストールされたPCまたはMac (有料で貸し出しできます)
    • 筆記用具
  • オンライン講座

    • 動画閲覧用端末(PC、スマートフォン、タブレットPC等)
    • インターネット接続環境
    • エクセルのインストールされたPCまたはMac
      (実習用。常に手元になくても可)
    • プリンター(資料印刷用)
  • プレセミナ-、フォローセミナー

    • 動画閲覧用端末(PC、スマートフォン、タブレットPC等)
    • インターネット接続環境
    • エクセルのインストールされたPCまたはMac
      (実習用。常に手元になくても可)

価格

  • オンライン講座
    定価56,540円 → 49,500円(税込)(学習時間1時間あたり約1,300円)

  • 公開講座
    定価56,540円 → 49,500円(税込)(学習時間1時間あたり約1,300円、昼食つき)

申込方法と受講日、受講開始日

この講座は、こちらから受講申込できます。
オンライン講座は、決済完了を確認できた段階ですぐに受講可能です。
決済には、銀行振り込みのほかクレジットカードも利用可能です。 ※公開講座は、次回開催未定です

法人研修

必要に応じで対面講座をアレンジさせていただきます。
こちらよりお気軽にお問い合わせください。

その他

  • 公開講座は受講時間が長いので、前半と後半を別々の日に受講することも可能です。
    (お申し込み時に、「講座に期待すること」欄に半日ずつ受講したい旨を記載ください。)

  • 受講される講座の変更、キャンセル、商品の返品等の規定に関しては、受講規約、プライバシーポリシー、特定商取引法表示 をご覧ください。

「エクセルマクロ・VBA発展編」講座と演習(オンライン講座)

btn_application

法人研修については、必要に応じで対面講座をアレンジさせていただきます。
こちらよりお気軽にお問い合わせください。

受講生の声 - 基礎編発展編1

『上司にマクロを見せると、大喜びされます』
匿名希望(団体職員)
sokushu_support65

『余計なミスが減ったり、ミスの発見が早くなったりしています』
Y.Wさま
sokushu_support135

『正しく学習すれば必ず身につくということが分かりました』
M.Tさま(IT関連)
sokushu_support136

「エクセルマクロ・VBA発展編」講座と演習(オンライン講座)

btn_application

法人研修については、必要に応じで対面講座をアレンジさせていただきます。
こちらよりお気軽にお問い合わせください。

公開日時: 2023/05/30 00:00