GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

マクロの勉強が中々進まない人へ一言アドバイス

2018-08-27 07:54:00 | マクロ作成のコツ
本日は

便利なのはわかっているけど、
勉強したい気持ちはあるけど、

中々マクロの勉強すすまない・・・
と言う人へアドバイスをひとつ。


勉強進まない人の理由は多くの場合、
「一辺にやらねば・・・」

そう思い込んでいる所に原因あるかと思います。

確かに、「VBA専門用語」の理解からの勉強は
最初からそれ相応のまとまった時間を要します。

けど、このメルマガで何度も言ってきましたように、
マクロとは自動化のための道具に過ぎませんですから、

そもそもが、そのような最初から時間の掛かる勉強
をする必要というのは 毛頭無い わけです。

我々がマクロを勉強する目的は、
マクロでエクセルを自動化することであって、
難しいVBAを理解することでは決してありません!

その辺だけは、くれぐれも間違わないようにして
ください。

※VBAいうのは、ほんとハードル上げまくる教え方
する先生だらけーの世界ですから、、(笑)
くれぐれもそれに惑わされぬよう、ご注意くださいね。


しかし、とは言っても当然のことながら
マクロ(エクセル自動化のプログラミング)というものは、
ごく簡単なレベルのものから、非常に難しいレベルのもの
まで、その難易度は実にさまざまです。

初心者の人で、マクロの勉強(マクロ作り)が全然すすんで
いないという人の殆どが、
最初から難易度の高いものまで全てをいっぺんに作らねば・・・
と、そう考えてしまう傾向にあります。

これは、例えるならば、野球を始めたばかりの野球少年が、
いきなり初打席でホームランを狙ってフルスイングを試みる・・
というに等しいものなので、、

それでは、ホームランどころかバットにボールはかすりも
しないであろうは当然のことですね。

いきなりそう考える(ホームランを狙う)のではなくて、
まずは、野手の間を抜けていくようなゴロのシングルヒット
を狙って打席に立つのが、初心者はよいわけです。

それで、ボテボテの内野安打のヒットの1本でも打てれば、
とりあえずは、それで十分に最初の初打席は成功であるわけ
です。

その比較的簡単に打てるボテボテのシングルヒットを重ねて
いけば、結果的に大量点にも結びつくわけですから、

初心者の皆さんは、

「まずは最も簡単な部分のマクロの1つ目を完成させる。」

それに集中して、それを目指してやってください。(最初は
ボテボテの内野安打程度の短いマクロで全然構いません!)


そして、

その次に簡単そうな部分をもう1つ、またもう1つ、・・・、
といった具合に、

今自分がやっている面倒臭い一連のエクセル作業の中で、
ごく簡単にマクロ化できそうな部分の短いマクロから1つ1つ、
マクロを増やしていきます。

それで、

例えば、これまで10時間掛かっていたエクセルの手作業の、
10個ある手順の中の簡単な2個だけでもマクロ化できただけで、
作業が8時間(10-2=8時間)に短縮できるわけでありますから、

その浮いた2時間で、次のもう一つ、少し難しい部分のマクロ
作りにもチャレンジできるわけです。

そうすると、またそれで更なる時間の余裕が生まれてきますので、
その節約できた時間でまたもう一つ、少し難易度の高そうな部分
のマクロ化にも挑戦することができるようになっていきます。

そうして、

そのように決して背伸びをしない(その場その場の自分の実力
に沿ったレベルの範囲のマクロを作ることを考えて、)ひたすら
シングルヒットを重ねていくことを考えてやっていけば良い
(背伸びしないから勉強は非常に楽です。)というわけです。


中々マクロの勉強が進まないでいる人は、ぜひこの
「最初からホームランを狙わない!(小さなシングルヒットを
着実に積み重ねていく・・)」この考え方に沿ってやってみて
ください。

マクロは、勉強してから作るのではなくて、作ってから勉強
するのです。特に中々進まないでいる人は、このような逆転の
発想が必要です。

正確には、

作ったマクロで得られる時間を使って、その次の勉強をする
~~~~~~~~~~~~~~~~~~~~~~~~~~~

のです。英語の勉強なんかとは違って、マクロは唯一それが
可能なスキルです。マクロは、時間を作り出す「打出の小槌
(うちでのこづち)」に他なりません。

よって、最初のマクロは小さければ小さいほど良いです。
ほんのちょっとした(ボテボテの内野安打の)マクロで、
十分です。スタートはそこからです。

まずはそれで、次の勉強時間を確保するということを考えて
勉強はじめてください。


それで、その具体的な方法についてですが、

特に、初心者の方は不必要に自分自身で高いハードルを設けて
しまっている場合が多いですから、

以下の方法を意識して、それ(自分の中の意識を)下げてあげる
と、「まずはカタカナ専門用語の理解を・・・」とか、
VBAの参考書や他の講座に多いその手の脅迫概念から開放されて、

楽に、実に気楽に「マクロのシングルヒット」が打てるプレイヤー
になっていけるかと思います。
自分の意識を変えることで、難しいカタカナ用語の脅迫概念から
とにかく自分を開放してあげる、ということが肝要ですね。

まずは、当講座でずっと繰り返し繰り返し練習をしてきました

「マクロの記録」+「ちょっとしたその修正」と、
「ループの基本形」+「分岐処理の基本形」とで、

そのちょっとした応用レベルのマクロを一つ作ってみます。


【マクロでシングルヒットの一例】

例えばの一例ですが、

「ブックの中に数あるシートの全てに共通する表の見出しを
入れたい」といった場合に、

仮に、まずいつものシートのデータ数でループを回す場合
であれば、


++++++++++++++++++─
Sub Macro1()
    n = Cells(Rows.Count, "B").End(xlUp).Row
    For i = 1 To n
        ・
        ・
        ・
    Next i
End Sub
++++++++++++++++++─


これが、当講座で何度も何度も勉強してきたループの基本中の
基本であるわけですが、、

これを、単純にシート数で回すループに変えてみて、


++++++++++++++++++─
Sub Macro1()
    n = Sheets.Count
    For i = 1 To n
        Sheets(i).Select
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "在庫管理表"
    Next i
End Sub
++++++++++++++++++─


とすれば、一気に全シートの指定のセル位置に(上記の例では
A1のセルに)表の見出し(上記の例では「在庫管理表」)が
挿入できるわけです。

また、上記を


++++++++++++++++++─
Sub Macro2()
    n = Sheets.Count
    For i = 1 To n
        Sheets(i).Select
        Range("J32").Select
    Next i
End Sub
++++++++++++++++++─


とすれば、各シートを開いた時に必ずカーソルを最初に入力する
位置に移動させておく(上記の例ではJ32のセルに)ということも
簡単に出来ますね。

よって、できたマクロは各々


Sub Macro1() '←全シートに表見出しを書くマクロ
Sub Macro2() '←カーソルを入力位置にするマクロ


といったコメントを書いておけば良いだけです。

更には、また


++++++++++++++++++─
Sub Macro3()
    n = Sheets.Count
    For i = 1 To n
        Sheets(i).Select
        Range("A1").Select
        ActiveCell.FormulaR1C1 = ActiveSheet.Name
    Next i
End Sub
++++++++++++++++++─


とすれば、先の表見出し(全シートで共通の「在庫管理表」
と固定名だったもの)を、各シートのシート名にすることも
出来ますので、


Sub Macro1() '←全シートに表見出しを書くマクロ
Sub Macro2() '←カーソルを入力位置にするマクロ
Sub Macro3() '←表見出しをシート名にするマクロ


てな具合です。(前回にも言ったように、これは

 Sub Macro1表見出しを書く() 
 Sub Macro2カーソル移動() 
 Sub Macro3シート名の見出し() 

などとしてもよいでしょう。)


なお、上記を試す場合には、予めシートを沢山作っておいて
から実行してくださいね。(シートが1つしかない状態だと
この実行結果は詰らないですから。(笑))

まさに、これはループの基本をちょっとアレンジしただけの
極数行の小さいマクロの(シングルヒットの)積み重ね
というものになります。



最後に今日の話をまとめますと、

マクロは勉強してから作るのではなくて、作ってから勉強する。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

すなわち、それは、

作ったマクロで得られた時間を使って、その次の勉強をする。
~~~~~~~~~~~~~~~~~~~~~~~~~~~

ということです。

中々勉強すすんでいないという人は、ぜひこの発想の転換にて
マクロで「時間の好循環!」これ生み出すよう実践してみて
ください。

コメント

VBAあるあるQ&A

2018-08-21 07:37:30 | VBAあるある

Q.エクセルのマクロを使えるようになるにはどのように勉強したら良いのでしょうか?

A.VBAの文法からでしょう。

 

いやいやいや!
それじゃ、我々昭和世代の「学校英語」の二の舞を踏む
だけになってしまうでしょ(笑)。(by 三太郎)

私から言わせると、ネットやVBA参考書とかで教えてる人達って、
ほぼほぼ素人さんばかりなので、VBAの世界にはプロから見て
失笑される間違った常識いうのが本当沢山、はびこっています。

上記回答のような昭和的な素人考え(一見もっともらしいけど・・・)
には惑わされぬよう、くれぐれもご注意くださいね。

 

 

コメント

小さいマクロからの積み重ねで、好循環サイクルに!

2018-08-10 05:36:56 | マクロ作成のコツ

小さいマクロからの積み重ねで、好循環サイクルに!これは、特に強く強調したい筆者の考える最大のマクロの利点が、これです。 そもそもマクロは、時間を生み出す唯一無二の道具だというものであります。

例えばなんですが、

一生懸命に英語の勉強をして英語をマスターしたとしても、その英語自体で 何も時間は生み出しはしませんから、英語の勉強に時短の効果いうのは一切ありません。
精々、辞書を引く時間がちょっと減る くらいなものでしょうか。。 なので、いくら英語の勉強に時間を掛けたとしても、 次の(もっと先への)勉強時間は、別途(他の時間を削って)自分で工面しない限りその先へは進めません。

けど、

マクロというのは、勉強してある程度の簡単なマクロでも作れるようになったなら、 その作ったマクロ自体で、時短の効果が生まれてくるわけです。 マクロを作れば、多少に関わらず、必ず時間の節約になります。必ずなります。

その、ちょっとしたマクロを作って節約出来た時間をまた次のマクロ作成や、もう少し難しい勉強に当てます。 そうすると、それでまた作ったマクロで更に大なり小なりの時間の節約ができるようになりますから、 その繰り返しの積み重ねで、次々にそうした時間の有効活用「時間の好循環サイクル」というのに 入っていけるわけです。

逆に、

マクロで失敗する人の多くは、最初からいっぺんに多くを詰め込もう、まとめて勉強しよう と考えてしまい、大概の人は下記のような「時間の悪循環」を起こして、失敗します。

【時間の循環】

 忙しい → マクロの勉強は後回し → 忙しいまま → マクロの勉強は後回し → 忙しいまま → ・・・

 (マクロの必要性はわかっているけれど、時間がない・・・)



その一方で、

【時間の循環】

 忙しい(マクロが必要)→ 短時間のレッスン →  ちょっとした一部のマクロ化 → その効果でやや余裕  → 次のレッスン → 次のマクロ化 → また時間に余裕  → 次のレッスン → 次のマクロ化 → 更に余裕が・・・


当講座でのマクロ成功者というのは 皆さんこんな循環になっています。

これが、これこそが、筆者がこの講座で長年やってきた三太郎式のマクロ勉強法(レッスン形式) であるわけです。
いっぺんに詰め込まれるだけの日帰りセミナー等に行って始めよう思うのが、 まず持って大きな間違いでありますので、それが上記のような【悪循環】を招いてしまう 最大の原因になっています。

そうではなくて、上記のような【好循環サイクル】 を生み出すことを考えて、マクロは始めるようしてください。 マクロというのは、時間を生み出す「打ち出の小づち」のような物でありますから、このような好循環サイクルを作って 次々と時間を生み出していく という発想で取り組んで行きさえすれば、

いくら仕事が忙しくて中々勉強時間が持てない言う人でも、 (当講座の1レッスンは概ね10~15分です。)
時間の好循環サイクルは容易に生み出すことが可能でありますので、
よって、多くの人が抱える「勉強する時間がない問題」いうのも、一気に解消される思います。

いっぺんに詰め込もうとすれば、勉強時間は当然、いくらあっても足らないです。


それで、

この【好循環サイクル】を生み出す為の、具体的な勉強方法についてですが、
百聞は一見に如かず!ネットで公開している人気のお勧めレッスンが下記にあります。

 ■ データ転記のマクロを作っていくよ!


なお、未だまるっきり未経験者(1度もマクロを作った経験がないという人)は、
まずは最初の こちらのレッスン1 からやってみてください。

 ■ これがマクロ作り最初の一歩だよ!「レッスン1」


いかがでしょうか?

こうやって、三太郎式(レッスン形式)のこのやり方で、少しづつ、小分けにして、 作ったマクロで得た時間で、
少しづつ勉強を積み重ねて行けば、勉強時間の負担は少ないままに、 この「時間の好循環サイクル」は特に忙しい人でも誰でも、容易に好循環生み出していける 思います。

要は、マクロというのは「時間の貯金」ですね。そう考えて取り組むんもらったら、あなたのマクロ化も もうバッチリです!

コメント

マクロ未経験(ゼロスタート)の皆さんへ

2018-08-07 06:48:14 | マクロ作成のコツ

重ね重ね言いますが、マクロ作りの勉強に難しいカタカナ専門用語の羅列いうのは、まったく必要がありません!

「マクロって、何なんだ?」の人は、
 こちら→ http://www.start-macro.com/55/w/s080.html


「マクロって、実際どうやりゃいいんだ??」の人は、
 こちら→ http://www.start-macro.com/55/w/s042.html

 

「マクロって、さっぱりわけわからん!!!」の人は、
 こちら→ http://www.start-macro.com/55/w/s100.html


当講座のレッスンは、まるっきりの未経験者でも手順に従えば一から作れて、すぐに使えるよう体系立てて作ってあります。

要するに、マクロは作りながら学び、実行しながら理解する。
VBA参考書にあるような「オブジェクト」やら「メソッド」やら「ステートメント」やらといった不必要な用語の理解からしようとするからダメなんです。

それら、マクロ作成にはまったく必要ないですし、それらから勉強した初心者は必ず、必ず直ぐに挫折します。違いますか?(笑)


マクロ作りで一番肝心な「応用力とか、実務活用力とか、」 そうしたものを身に付ける。完成に至るまでの過程を知らずにどうやってそれ作っていったのか?どこの誰が作ったのか?もわからないサンプルコードに頼っているのでは・・・)、それ応用など出来るわけがないですから、

作成過程をちゃんと勉強して、「マクロの記録」のうまく賢い活用法を練習して、一から作れるようになるということが肝要です。

 

 

コメント

マクロ検定の結果発表(合格率など)

2018-08-06 07:53:26 | マクロ作成のコツ

先日実施しました「全国統一マクロ検定」(初級、準初級)の結果を発表します。

受験いただきました皆さんには、お忙しい中でのご参加と、そのチャレンジ精神に、深い感謝と大いなる敬意を表したく思います。ご参加、誠にありがとうございました!

解答提出者の皆様には、個別の合否に付きましては既に結果をお知らせ致しました所ですが、ここでは、全体的な以下の総評を述べさせていただきたい思います。

 ・出題の狙いとポイント
 ・合格率
 ・不合格者に見られた主なミス

 

■出題の狙いとポイント

まず、今回の検定課題では、

来る2020年から、小学校でもプログラミング教育が全国で義務化が開始するということで、学校の「クラス成績表」の管理に関するマクロ作成の問題を出しました。

当メルマガ読者の皆さんの中には学校の先生も結構多いと聞いていますし、忙しい先生方のExcel事務の作業効率化の為にマクロが貢献して、先生方の少しでも多くの貴重な時間を生徒さんの為に使ってもらえるよう、願ってやみません!

なお、成績表のデータ言いますのは、要は数字の並ぶ表ですから、これは学校の先生に限らず、数字を扱う色々な職種全般に於いても、大いに役立つだろうマクロ作りの基本問題となっています。

今回のデータ(処理イメージ)は、こんな感じです。

サンプルデータの図

 

 

■出題のポイント

それで、今回出題のポイントとしましては、「各科目の30点以下を赤で」&「合計90点未満は落第」この条件における分岐処理の使い分けが正しく出来ているか否か、という点と、あとは、2回目以降のマクロ実行時に、先立つ「初期化」(前回結果のクリアー)がきちんと漏れなく出来ているか否か、という2点です。

 

■合格率

それで、検定の結果ですが、

今回も、まるっきり一切の手加減なしで厳しく、厳密に合否の判定をさせてもらいました。(プロは妙に嗅覚が働きますので、一目でバグ見抜くいうのが得意です。笑)

想定合格率は、今回も6割に設定したレベルの問題作りをしましたが、特に今回、初級(60分以内の制限時間あり)のほうは合格率が高く、その逆に、準初級(制限時間なし)のほうがやや低い、という以下の結果となりました。

 「初級」合格率・・・・64.7%
 「準初級」合格率・・・41.1%

合格した皆さん、おめでとうございます!


「初級」合格者の皆さんには既に「合格証書」をお送り致しました。(合格2度目以上の人と準初級は除きます。)


それで、この今回の結果なんですが、

特に時間制限のない「準初級」よりも、時間制限の厳しい「初級」試験のほうが、遥かに合格率高かったという結果には、私もちょっと、これは意外に感じましたわけですが、よくよくこの要因は何か?を考えてみますと、私が思うに要するにこの差は、「緊張感?!」

人間って、どうしても 例えば、いつまででもいいからと言って頼まれた仕事って、本当、いつまで経っても出来ません!ことって多いわけですし(笑)、その手の、特に期限のない(≒どうでもいい)仕事って、身も入り難い思うわけです。

これはプログラマーの場合でも、私よくこう言うのですが、「プロとアマチュアの違いって何か?」と問われたら、それはまず第一に、厳しい納期がある中で作れる人か、そうではない人か、その違いです。

システム開発というのは決まって納期が厳しいですから、職業プログラマーいうのは常に時間に追われています。時間的に余裕があるプログラム開発の仕事なんか、この私でも何十年とやって来た中で、ただの一度も記憶にないです。

一方、皆さん同じと思いますが、アマチュアの方がマクロ作る際に、納期や期限いうのは殆どない思います。

例えば、部長さんから「このデータをこうこうこういう処理するマクロを必ず明日の朝までにちゃんと動くよう作っておいてくれ。」だなんて、本職でもないあなたが上司からそんな無茶を言われる事なんて(よほどのパワハラ上司でもない限りは・・)まずありませんですよね。(笑)

もう、マクロが十分に作れるレベルに達しているベテラン読者の皆さんであれば、会社の同僚が使うマクロの作成を誰かに頼まれた時に、「なるべく早めに作っれくれると嬉しい・・・。」と、そう言われたことは多々あるかも知れませんけど(笑)、

そこまで厳しく「いついつまでに必ず!」と、納期の厳守を厳しく言われてプログラム作る、という場面はまずアマチュアの人は経験ないと思います。

まぁ、自分や同僚の作業効率化の為に自主的に作るマクロのその殆どが、いづれ、いつか、そのうちに、重要度その程度にしか扱われていない場合が多いですから。(けれど、実際はマクロが作業時間に与える影響度は実に絶大(重要度大)だったりすると思います。。)

すると、

人間どうしても忙しい時には、後回しに出来る仕事も、資格の取得も、それでは中々手つかずになってやらずじまいになってしまう場合が多い思います。

いついつまでに絶対終わらせなきゃならない仕事や今年中にこの資格は必ず取るぞ!だったりの資格と、「いつでもいいやー」の扱いのそれとは、全く違うわけです。

マクロの勉強の場合でも、いつか、そのうち暇になったら始めよう・・・、そう考える人は多いですが、そうした人はいつまで経っても暇になんかならないわけですから(笑)、結局、やらずに終わりますね。

我々ビジネスマン、ビジネスウーマンいうのは、常に自分の仕事に追われていて、常に時間に余裕がない思って生きてはいますけど、

それは、是が非でも結果を出さねばならない場面においては返って良い事でありまして、逆に、余裕があり過ぎると仕事の成果も、試験の合格率も下がる、

それが今回の検定にも如実に現れた当然の結果なんだろう思った次第です。

でもし、今後またこのような検定を行う機会がありました場合には、時間制限なしの準級に関しては、大いに見直す必要ありだと、今回の結果を鑑みてそう強く感じました次第です。 (→※以後、準級は廃止にします。)

 

■不合格者に見られた主なミス

今回、惜しくも不合格となった皆さんは誠に残念ではありましたが、(下記のような大変惜しいなぁ~思える人が多く居られました。)

不合格理由で多く見られた主なミスは、以下です。


・30点以下(≦ 30)と90点未満(< 90)のIF文条件式の間違い。(並びに、「条件付き書式」を使って解いた人は設定時のこれらの設定ミスが見受けられた。)

・2回目以降の実行時に正しく初期化がなされていない。(前回データでの色や表示の全てがクリアーされないで一部残ってしまう。)

・処理対象のシート名が固定化されている。(問題文では、シート名は可変(マクロの実行時に開いてるシートに対して処理をする)と明記されている。)


特に、今回は問題文の最後にあえて「この条件を満たす限りは何を使っても構いません。」との記載を入れましたので、ループやIF文は使わずに「条件付き書式」使ってやった人が多く居ましたので、マクロの記録で「条件付き書式」を記録するわけですが、

「条件付き書式」はまさしくユーザーからの見えない化を招きますので、見え難い潜在バグも多くなります。例えばですが、クラス人数が2回目減った場合にA~E列のデータ削除時でもG列に「落第」と出てしまう、とかです。

他にも、とにかく「条件付き書式」いうのは、対象のセルをクリックしてから、[ホーム]タブの[条件付き書式]→[ルールの管理]→[条件付き書式ルールの管理]画面→[ルールの編集]→[書式ルールの変更]画面で、・・・

至って確認し辛い設定(見え難いわ!笑)ですから、当然バグも抱え易くなりますので、見え難い関数や設定の類はなるべくならループとIF文の基本処理を使った見え易い処理を心がける事を、私はお勧めします。

その辺は、

下記の動画の後半部分(関数は見えないから・・・)でも解説していますので、興味ある方は参考に こちらのYouTube動画 も合せて見てください。


今回の検定結果は、以上です。

 

コメント