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


手書きのワーク。パソコン上では分かりにくいことも、自筆で手書きすると一発で理解できます。

発展編1での恒例のワーク、名札交換ゲーム。具体的な動きを使って抽象概念について学びます。

ワークの輪には、講師の小川も参加します。プラスアルファな知識を得られることも。
講座の進め方 ○オンライン講座
  • 公開講座の収録映像ではありません。
    オンライン講座の受講生のためだけに撮り下ろしたオリジナルの動画セミナーです。
    オンライン講座のメリットを最大限に、デメリットを最小限にするべく、徹底して作り込んでいます。

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

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

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

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

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

☆発展編1マインドマップレジュメ(12枚)

講座で主に使用する資料です。テキストのダイジェスト版です。

 

☆発展編1ワーク資料レジュメ(7枚)

講座全体の構成図、抽象概念を理解するための補助資料等。
講座で一部を使用します。

 

○発展編1演習解説資料レジュメ(10枚)

講座後半で扱う演習問題を解く際の考え方と作業の進め方。
演習後の各自での復習用資料です。

 

○エクセルマクロ・VBA発展編1 テキスト(162ページ)

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

 

・発展編1サンプルデータ

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


発展編1は基礎編に比べて資料点数は少なめです。

発展編1のテキスト。図版を多用し、講義を忠実に再現しています。(オンライン講座ではPDFファイル)

講義内容を要約したマインドマップ。「復習するときにも持ち運びしやすい」と好評です。
講座の所要時間と講師 ○公開講座: 約9時間(小川が直接指導)
○オンライン講座: 動画64本、再生時間合計463分56秒
プレセミナー

以下のメールセミナー、動画講座を事前に配信します(希望者のみ)

○エクセルマクロ・VBA基礎編プレセミナー
ショートカットキー操作を解説。メールセミナー(全10回)
○いまさら聞けない!タイピングスピードをあげる方法
全5回 総再生時間 38分04秒 動画講座
○ITセンスがよくなるエクセル講座
全5回 総再生時間 42分34秒 動画講座

フォローセミナー

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

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

サポートと期間 この講座には、無料サポートがつきます。
サポート中は、講座内容に限らず、実務でマクロを書いているときに生じた疑問等にもお答えいたします。
受講された講座でお伝えしている知識の範囲を大きく超える問題については、お答えできない場合もありますが、困ったことがあったときには、まずは相談してください。
どんどん活用してください。
サポート期間は180日間です。
(サポートのより詳しい内容やサポート期間を延長する方法については受講後のサポートのページをご覧ください)
学習時間目安 エクセルマクロ・VBA発展編1とフォローセミナーを含めた標準の学習時間は以下のとおりです。
○公開講座: 40時間
講義受講時間、動画再生時間、演習問題に各自で取り組む時間を含む
○オンライン講座: 40時間
動画再生時間、演習問題に各自で取り組む時間を含む
特典 この講座を受講される方には、以下の特典が無料でつきます。
特典をご希望の方は、講座申し込み後にお申し出ください。
・小冊子「Windows 誰も知らない12の超効率化技」
PDFファイル143ページ
・ツール「個人情報、取引情報変換プログラム」
エクセルファイル
・冊子&サンプルデータ「Excelマクロとデータベース関数の連携例」
PDFファイル31ページとサンプルデータ
用意するもの ○公開講座:
・エクセルのインストールされたPCまたはMac (有料で貸し出しできます)
・筆記用具

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

○プレセミナ-、フォローセミナー
・動画閲覧用端末(PC、スマートフォン、タブレットPC等)
・インターネット接続環境
・エクセルのインストールされたPCまたはMac
(実習用。常に手元になくても可)
価格 ○オンライン講座:
定価79,500円 → 49,500円(税込)(学習時間1時間あたり約1,300円)

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

[再受講]
○オンライン講座受講済みの方がオンライン講座で再受講される場合:
月額1,500円

○オンライン講座受講済みの方が公開講座で再受講される場合:
48,000円(昼食つき)

○公開講座受講済みの方が公開講座講座で再受講される場合:
19,000円 (昼食つき)

○公開講座受講済みの方がオンライン講座で再受講される場合:
28,000円
申込方法と受講日、
受講開始日
公開講座、オンライン講座とも、こちらから受講申込できます。
オンライン講座は、決済完了を確認できた段階ですぐに受講可能です。
決済には、銀行振り込みのほかクレジットカードも利用可能です。
その他
  • 公開講座は受講時間が長いので、前半と後半を別々の日に受講することも可能です。
    (お申し込み時に、「講座に期待すること」欄に半日ずつ受講したい旨を記載ください。)

  • 受講される講座の変更、キャンセル、商品の返品等の規定に関しては、受講規約、特定商取引法上の表記のページをご覧ください
お申し込みはこちら

『本当に丁寧なサポートで驚きです』

増谷様(会社員 経理等担当)

早速のお返事ありがとうございます。
明日会社で1つ1つ動作確認しながら、先生のかかれたものを理解し、動作確認して試してみます。
スカイプほどのないようではないのですね。
すみません。
明日会社で動かしてみるのが楽しみです。

本当に丁寧なサポートで驚きです。
また、不明な点ありましたら、聞いてしまうかもしれません。
ありがとうございます。

『心の余裕が違いますね!』

匿名希望(大学職員)

以下ご報告です。

さきほど、昨日までに学生から提出された個人票を集約し、担当者へ提出いたしました。

昨年は、紙に書かれた個人票をいちいち入力し、誤りがないか確認する作業を二人がかりで行っておりました。
締め切り後にも、あとからあとから提出してくる学生がいたり、それでも担当者からは早く名簿をつくってとせかされたり、本当にストレスの多い作業でした。

ところが、今年はもうあっという間に一覧表ができあがり、本当に感激しております。

小川さんのおかげです!!!!
ありがとうございます。

これならば、あとから個人票の提出が増えたりしてもすぐに対応できますし、心の余裕が違いますね!!!!

このあと、名簿を作成して担当者へ提出する作業が残っていますが、あともうちょっと頑張ってマクロを完成したいと思いますので、小川さん、どうぞお力を貸してくださいませ。

よろしくお願いします。

『「時間がない」という方にこそお勧めの講座です』

N.Fさま(経営コンサルタント(戦略系))

仕事柄、非定形業務が多いのですが、大量のデータを分析するために必要な事前処理の部分で、マクロを活用しています。
「作業」の大半をプログラムしておけば、「仕事」に頭を集中させられるため、思考効率が良くなったと思います。(実際「作業」に費していた時間も半分くらいになっています。)

フォローアップも充実していますが、2日間のセミナーだけでも十分な情報量だと思いますし、市販本やネット上の情報を自分の力で読みこなしていくだけの必要十分な知識が得られますので、「時間がない」という方にこそお勧めの講座です。

『製品表示にも応用し、周囲から重宝がられています』

T.Nさま(食品メーカー品質保証担当)

塾長にエクセルマクロの「初めの一歩」を教わってから、「どうすれば仕事を効率的に美しく仕上げられるか?」ということを常に意識しています。
仕事柄文字列の操作も多いのですが、全角・半角、マイナス・ハイフン・ダッシュ・長音、ゼロとオー等が混在した台帳をマクロで一気に整理したり、製品表示にも応用し、周囲から重宝がられています!!
環境がアナログであればある程、実は整理が必要でエクセルマクロ的な思考が必要だと思います。
初中級セミナーの内容に一段落着いたら、上級セミナーにも参加してみようと思います。

他のアプリケーションとエクセルマクロの連携やフォーム、イベント等まだまだ知りたい事が山ほど有ります!!

『本当に自分のスキルをアップするセミナーです』

山田聡明さま(有限会社ジーオン代表取締役)

1.講義について

・講義の進行が止まらない。
最大効率で受講者が理解。

受講者が2日間最大効率で講義を受講できるようサポートしているのが感じられました。
受講者が入力ミス等で進行しないのをサポートスタッフが対応等。

私の場合、年齢による老眼等の問題があり、見えにくいなって感じていたのです。
それにサポートスタッフの方が気付いて、席を前に移動してもらいました。
注意して見ていてくれているんだなあと、本当に感じました。

2.講義内容について

・今までも簡単なマクロを使っていました。
自分の癖だなって思うのですが、空白のセルを探していました。

i1=2
Do Until IsEmpty(Cells(i1,2).Value)
i1=i1+1
i=i1
LOOP

こんな感じで。

講義では、全く逆の発想で、InFmMx=Range("B65536").End(xlUp).Row
これが楽しい。

これも自分の癖だなと思いながら、今回の講義で更にいろいろなパターンを書けるように思いました。

・エクセルは列幅が他のセルの影響を受けてしまう為、色々な表を縦に並べるのにはむかない。
これが面倒なのだが。

結局一寸の違いでもシートを増やしたり、あるいは別ファイルにしてしまうことが多いが、逆に思い切りシートを増やすやり方は、ホントにおもしろいと思いました。

3.フォローアップセミナーについて

講義が終了し、次の日からバタバタで、軽く読むのがやっとの状況でした。

二日間の講義とフォローアップセミナーで、本当に自分のスキルをアップするセミナーであると感じました。

しかし、本当に9月は雑用が多く、PCに向かう環境に自分を置くことがほとんどできず、フォローアップセミナーを修了してしまいました。

しかし、このセミナーはテキストが手元にあり、更にフォローアップセミナーのメールに従って、勉強することが可能です。

近々時間を見つけて、フォローアップセミナーを実行し、この講義を完全に自分のものにしたいと、思っています。

3.感じたこと

最大効率を目指したすばらしい講義だと本当に思います。

PCにむかえれば、10分でも勉強が可能なのは、やはり入力スピードが速くなければ、難しいでしょう。

実際には、生活の中で同じ事の繰り返しが非常に多い。
この非常に多い繰り返しを最短で終了できれば、本当に効率化が行えると、再認識させられる講義内容でした。

本当に、ありがとうございました。

PS.遠近両用メガネを購入しました。
いままで、用途に合わせてメガネを変えていたのですが、これも効率化の一つですね。

『すでに、受講前の要求をクリアしています』

山田聡明さま(つづき)(有限会社ジーオン代表取締役)

受講前、受講直後、現在に分けて感想を記載させていただきます。

○受講前

【レベル】
ごくごく簡単に自動記録のみ使用したレベルで、プロシージャ、モジュールって何?構造化プログラミングって何?といったレベル

【感想】
HPでの紹介をみてたった2日で本当にできるようになるのか?という疑問より、受講後はこんなことができるようになり、世界観が変わってしまうのが楽しみでした。
また、決してやすくない受講料なのでHPの受講生の感想を入念に読んで、期待がふくらんでいました。

○受講直後

【レベル】
とりあえず、こんなことが簡単にできることがわかったレベル。
特にアプリケーション作成講座は復習してマスターできるとおもうレベル

【感想】
さすがに、2日間受講しただけでは、世界観が変わることはなかった。
受け身のセミナーでは、こんなことができるのだということがわかり、そのノウハウを知ることができ、マクロの基本と今後どのようにすれば良いのかがわかることができた。
メールセミナーでいろいろなテクニック的な要素を勉強すると、世界観が変わるのではなく、広がったような気がする。
むしろ、仕事に対する取り組み方や進め方が変わったように思えました。

○現在

【レベル】
伝票マクロを応用したマクロを組み、さらに付加機能をつけるべく取り組んでおり、すでに、受講前の要求レベルをクリアしているレベル。
単純なエラーがでてきても、あわてずに、調べたりすることにより、落ち着いて対応ができるレベル。

【感想】
セミナーを受講して良かったと思っています。
気がつけばマクロって思っていたよりも、簡単に、便利なものだということがわかりました。
1月経過して、基本を習った上で、実践で研鑽することにより、日々成長してるような気がします。
入口が間違っていたと思っています。
上級コースには大変興味があり、できる限り受講したいと考えています。

『作業が格段に減りました』

N.Aさま(一般事務)

以前からマクロに興味はありましたがVBAの本をみてもわからず、自動記録したものも記述された内容が解読できず使用を断念していました。
そんな状態でしたがセミナーで体系立て、基本概念から実際的な知識までを一気に教えていただき、マクロの全体像や構文の形がつかめるようになりました。
セミナー・フォローアップをとおしていつでも何度でも先生に質問ができるようになっていたので不安なく集中できましたし、コーディングには、結構、要点やコツなど考え方のことがあったので教わってよかったです。
今、マクロをファイルの追記や改版チェックに使用しています。
これまで条件付き書式や関数だけでは、不便だったり、手間だったりしたことが解決し、作業が格段に減りました。
他にもいろいろ応用するのが楽しみです。

『効率100倍UPです』

匿名希望(メーカー勤務)

小川先生の講座を受講して1ヵ月強経過しました。
受講後はインターネット等の関連掲示板で見かけるVBAソースの意味もよく判るようになりました。

又、自身の実務においても、従前は手作業でウンザリしながら片付けていたものが、数分間(1回あたり)に短縮できました(効率100倍up)。

まだまだマクロ化したいものはあるのですが、イメージが上手く掴めていないものもあり、御紹介頂いた参考書等を見ながら、順次マクロ完成へとstepupしております。
ありがとうございました。

『たった2日間でど素人が..と半信半疑でしたが』

匿名希望(化学品メーカー営業事務)

セミナー参加前の私は、膨大なエクセルの資料に翻弄される日々を送っていました。
その殆どが“手打ちによる転記”の作業で、受注ひとつが変更になる度に沢山のエクセルも手直ししなくてはならず、時間が無駄に感じられました。

自己流でマクロの自動記録を多少使った経験はあったものの、↑この問題には対応できなかったのでネットで大評判だった小川先生のセミナーに申し込みました。

たった2日間でど素人がマクロを理解できるのか半信半疑でしたが、身近な例えをもちいて楽しく勉強し、気がついたらそれなりにマクロがわかる様になっていたのは驚きでした。
また仕事への取り組み方などへも多数の貴重なアドバイスを頂戴し、意識が大いに改革された思いです。

小川先生のおかげでマクロの楽しさを知ることができました。
今後も頑張って勉強し、人に喜ばれる様なマクロを書きたいと思います。

上級コース、絶対に参加してみたいと考えております。
その時はまた厳しく楽しくご指導下さいませ!

『マクロに興味ある人に紹介していきたいです』

竹内正城さま(給食会社 管理栄養士)

パソコン教室の特別講習会として小川先生が講師として講習していただいたのをきっかけに「Excelマクロ初中級速習コース」を受講させていただきました。
受講内容も充分に満足できる内容でしたし、その後のフォローアップセミナーは、さらにきめ細かい内容であり、毎日少しずつおこないさらにもう一度最初にもどってひとつひとつ考えながらマクロを作ることができました。
これほどまでに充実した講習会でありましたので、友達にもマクロに興味がある人がいれば、紹介していきたいと思います。
又、1年間のフォローアップ研究会にも入会してさらにマクロを勉強していきたいと考えています。

今後の講習会(マクロ関係だけではなく)もできるだけ出席して自分のスキルをさらに高めていきたいと思っています。
今後ともよろしくお願いいたします。

そのほかの受講生の声(198件)はこのリンクをクリックすると表示されます。


お申し込みはこちら
トップへ