GoGoマクロのブログ

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

GoGoマクロ

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

これは「できるプログラマー」の常識ですよー

2018-10-18 06:25:39 | VBAあるある

世の中は何事にも、単純に、常識的に考えたら分かることでも、
いざ、VBAのプログラミングになると、なぜだか常識外れのおかしな
考え方に陥ってしまう人が多くありますので、要注意です!

それで、IT業界歴25年、システム開発の裏の裏まで知り尽くした
ベテランSE(システムエンジニア)の私から言わせますと、
VBA界隈でよく言われている誤った常識の多さには前々から、
どうにも違和感を感じています。

2020年から全国の小学校では英語と共にプログラミングが必修科目
となるという日が、もうすぐそこまで迫って来ているわけですが、、

正直、このまま行くといづれはVBAで蔓延する可笑しな常識いうのが
小学生にさえも笑い者になってしまいかねない事態だと、

そんな危機感を持っています。

と言うか、今でも既にもう情報処理試験に合格するような優秀な
中学生プログラマーの間では、VBAが失笑されているとか・・・。
そう聞いていますので、これは早急に正していかないといけないな
と思っている次第です。

中でも、そんなVBA界隈の間違った常識で一番多い思いますのが
「変数名宣言の強制オプション」というものです。これの勘違いが
非常に多い。。

いいですかっ!

世の中のマクロ言語で(VBAも含めて)、変数名の宣言が強制
される言語というものは、ただの一つもありません!

VBAの場合にも、それはただの「オプション」に過ぎません。
Excelの歴代のバージョンでも、出荷時のデフォルト設定では必ず
OFFです。VBAはマクロの言語ですから、これは当然です。

ついでに言うと、以前にも言いましたVBAのお父さんに当たる
BASIC言語でも、そのまたお父さん(祖父)のFortran言語でも、
変数名の宣言いうのはまったく強制されるものではありません。

ついでに言うと、今、プロのプログラマーから一番人気の高い
言語であるPython(パイソン)という言語においても、そのよう
な強制はありません。それが、世の中の当然の流れであります。

ハードウェアの性能が著しく向上してきた今、昔ながらのDIM宣言
(即ち、dimensionでの領域確保)というものは、特に、マクロ
の言語(即ち、for Applications)においては、もはや、無用の
長物だと言っても過言ではない思います。(それ故に、VBAでの
Dim宣言いうのは「日付型」だけで十分だと、私は常々からそう
言っています。)

にも関わらずです、

本来、そのような強制をされるはずのないマクロ言語の一つである
VBA界隈だけで、そのようなマクロの歴史も知らないし時代錯誤
だし、な誤った認識が蔓延してしまったのか?

これは、全く持って由々しき事態だと思っています。


ちなみにですが、未だマクロ始めてないで知らない方も居るかと
思いますので念のため説明しておきますと、

「変数」とは、プログラム上のデータを入れておく為の箱で、
「変数名」とは、その箱につける名前のことで、
「変数宣言の強制」とは、こちらの「エラー対処方法」の
 Webページ をご覧ください。

 

で ここで、皆さんに問いたい思います。

変数名の強制オプションは使ってはいけません!
その理由がわかりますか?

 

これ、知らずにネットや参考書やセミナー等で誰かが振りまいてる
間違った入れ知恵を信じてしまって、
間違ったオプション使う設定をしてしまっている人が非常にこれは
多く居る、困った事態となっています。

なぜそれやってはいけないのか、今回はその理由の一つを詳しく
解説してみます。(理由沢山ある中の、まずはその一つ目です。)


それで、話はちょっとそれますが、

先日私、ちょっと歯が痛みまして実に10数年ぶりで歯医者さんへ
行ったんですが、

診察待つ間に暇だったので、待合室に置いてあった普段は決して
見る事のないビジネス雑誌を手に取って、何気なしにペラペラと
めくっていましたら、その中に

「できるビジネスマン10の習慣」

というタイトルだったかの特集記事というのが載っていまして、
1位は何かな?思って、その記事ちょっと読んでみましたところ、
その習慣の第1位に書いてあったのが、

「メールの相手の名前は必ずコピッペする。」

だったんです。

私としてはそれ、何も「できるビジネスマン」じゃなくても
それはごく常識的な、至って当たり前の話と思っていましたから、
有名雑誌の特集にわざわざこれ載せる程の話なのかな・・・?
とちょっと思った次第です。ですよね!?

要するに、それしない人だと(できないビジネスマンだと・・)
たとえば、相手の名前の「中田様」を「田中様」と打ち間違えて
メール送ってしまったりするわけですから、これは・・・大変に
危険行為ですね。ビジネスの世界では決してあってはならない、

実に恐ろしいミスです。。

そう言えば、以前に私にも、
「三四郎さん、いつもメルマガ読んでます!」ってなメールを
頂戴したことがありましたですが、、

うむ、「三四郎?」

このブログでもメルマガでも、これだけ毎回、三太郎、三太郎、と
わたし何度も何度も連呼して書いているにもかかわらずですよ、
それでもなお、私を「三四郎」って呼ぶ人があるわけです。(笑)

そうです、

人間いうのは、打ち間違えなどのタイプミスに加えて
「中田さんを田中さん」だったり、「三太郎を三四郎」だったり、
そのようなちょっとした勘違いが実に多い、間違うのが性分の
生き物であるわけですね。

それ故に、Excelデータの整理は間違えや勘違いは絶対にしない
機械で(マクロのプログラムを組んで)処理するというのが良いと
言い続けて来ましたわけです。

私の場合は実に温厚な人間(!?)ですから、名前を間違われた
くらいでは決して怒ったり気分を害したりはしませんですが、
その時の返事は、普段よりは気持ち短めの(そっけのない?)
メールをお返ししたかと記憶しています。(笑)

そういうことですから、

メルマガ筆者宛への感想メールであるなら間違っても大した
問題はないわけですが、これが、大切なお客様へとか、微妙
な関係の相手へとかだと、いきなりのメール冒頭での名前間違え
というのは致命傷(本文の内容の如何に関わらず・・・)、
著しく心証悪くしますので、間違いなく"アウト"ですよね。

だから、

必ず、メールの相手の名前いうのは、相手が自分でサインを
して書いてきた名前の部分からコピッペをする。
それは何も「できるビジネスマン」に限らずの、ごく常識的
な誰もの習慣なんだろうと、私はそう思っている次第です。
ですよね?


で、

それは何もメールを書く時に限った話ではありませんから、
プログラミングの場合でも、これは全く同様です。

要するに、

絶対間違ってはならない「変数名は必ずコピッペする。」
というのが、間違いなく「できるプログラマー」の常識中
の常識だと思います。

困ったことに、VBA界隈ではそのような変数名のタイプ
ミスを防ぐ為に「変数名宣言の強制オプションを付けろ!」
言ってる勘違いが非常に多く見られるワケなんですが、
それは間違いなく「できないプログラマー」の象徴ですね。

できる人は必ず、間違っちゃいけない名前の部分は
メールの相手の名前でも、プログラムの変数の名前でも
「コピッペする」ものです。できる人なら、その習慣
誰でも皆しっかり身に付いてる思います。

そんな、VBA界隈には多い「できないプログラマー」
勘違いをうのみにして、変数名宣言の強制オプションを
ONに設定してしまってる人は居ませんか?

もし、心当たりのある人は直ちにExcel開いて、デフォルト
のOFFの状態に戻してください。OFFですよ、OFF!
出荷時にデフォルトで設定されている通りの「OFF」です。

ちなみに、このオプションの正しいデフォルト設定への
戻し方も先ほどの こちらのページ にあります。


それで、そのような「できないプログラマー」のマネをして、
自分のタイプミスを機械に頼ったやり方をしている人だと、

メールのソフトで相手の名前のチェックなんかいちいち誰も
注意はしてくれませんわけですから、他のソフトの使用時に
必ず痛い失敗をする事になるわけです。だから絶対、名前の
チェックを「機械任せ」なんかにしたらいけません!

なので、名前は(メールの相手名も、プログラムの変数名も、)
必ずコピッペする癖というのを付けておくようにしてください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ある一部のソフトだけに特有の機械的なチェックに頼っていると
よそでもっと大きな痛い目に遭いますよ!!

これも以前にも書きましたが、

人間、キーボードで手打ちをすれば必ず打ち間違えはするもの
です。タイピングがプロのデータ入力代行業者であっても、
保証される正打率(正しくタイピングする確率)は精々95%に
過ぎません。入力のプロでも100文字打てば5文字は間違う。。

なので、タイピングのプロでもない我々一般人は、仮にその
正打率が80%とすれば、5文字に1文字はミスをすることになる
わけなんですから、

これは、前回のスッキリ書きたいという話と同じで、自分の能力
を過信して(自分は絶対タイプミスはしない)思う方が間違いで
あるわけですね。何か実行結果がおかしいなと思ったら、まずは
自分のタイプミスを疑って、それ確認をすればいいというだけの
話です。

5文字以上の長い変数名を付けたのならば、必ずミスあると
思わないといけませんから、変数名はコピッペして使い回す
いうのが、間違いなく「できるプログラマー」の当たり前の
常識事であります。何でもかんでも強制する理由など、毛頭
ありません。

他のマクロ言語には、そのようなチェック機能いうのはありま
せん。自分自身でちゃんとそれチェックのできる当たり前の人
になってください。それ、他人(機械)任せに慣れてしまうよ
うだと、「できないビジネスマン」や「欠陥プログラマー」と
なってしまうだけですね。

繰り返しになりますが、変数名をタイプミスしたか、ミスして
ないか、それは自分自身でチェックできるようにならなければ
なりません!

それが、プログラマーのごくごくごく、常識事である言うのは
確かです。皆さん、よろしいですね。

あなたが使っているあらゆるソフトにも、そんな名前のタイプ
ミス、チェックをしてくれる機能が必ず付いているいうので
あればまだしもですが、メモ帳でも、メールソフトでも、他の
マクロ言語でも、殆ど全てのソフトにそんなチェック機能など
付いてはいません。

ワードには(Excelのオプションにも)スペルチェック機能は
ありますが、そもそもがあんな機能(スペル間違ってると機械
が判断すると赤い波線みたいのが勝手に表示されてしまう機能)
あれって必要ですか?余計なお世話じゃないですか!?(笑)

前回の話の「文章はスッキリと」と同様に、
まず自分を過信しない事、常識的に考えたタイプミスの防衛策
いうのは「名前はコピッペする。」できるビジネスマンでも
できるプログラマーでも、それしかない思います。


はっきり言いますが、残念ながらVBAの場合、
「タイプミスやスペルチェックの為に変数強制オプションを
付けろ!」と言っている、そのようなできるプログラマーに
あるまじき勘違いが非常に蔓延してしまっていますから、、

只でさえ下に見られがちな簡易言語のVBAが、プロからは
増々見下される、その原因の一つとなっているというのは、
それは紛れもない事実かと思います。残念です。。

ちょっとした数行や数十行のマクロを組むために(初・中級者
のマクロは全てこの範囲内です。)、変数名定義の強制なんて

 Dim i As Long
 Dim j As Long

とかですね、必要であるわけがないです。

また、「明示的に Dim は必ず書け!」って言ってる人も居る
思いますけど、、

これも、例えば私のようなプロの場合だと詳細設計書(変数一覧
や領域図など)のドキュメントに書く(明示する)わけなんです
が、素人の皆さんはそこまでやる必要はないですから、

これは、私が指導する場合にはプログラム中にコメント文で

 '変数 i は、シート縦方向(行方向)のループカウンター
 '変数 j は、シート横方向(列方向)のループカウンター

と書いておく方がずっと明示的で、後々までわかりやすいでしょ。
そう言っています。まぁこれは、

 Dim i 'シート縦方向(行方向)のループカウンター
 Dim j 'シート横方向(列方向)のループカウンター

これでもよろしいですけど、
少なくとも、要らん「 Option Explicit 」を付けての

 Dim i
 Dim j

これじゃあ、人間は元より、コンピュータにも何の意味も成しま
せんからね。(コンピュータに変数名の概念は存在しません。)

意味がないどころか、(これはせっかく調子出てきて仕事が波に
乗ってきた矢先に、要らん電話が掛かって来たり、要らん上司に
話しかけられたりのごときに、)この為にせっかくの「プログラ
ミング思考が中断されてしまう」大きなマイナス行為になります。

       ↑これはほんと重要ですよ!

 

というわけで、本日は、

「当たり前の正しい習慣を身につけましょう!」

間違ってはならない名前は(メールの相手名もVBAの変数名も)
「必ずコピッペせよ!!」

と言うお話しでした。

本日の「変数名の強制オプションは使ってはいけない理由」、
まずのその一つ目ご理解いただけましたでしょうか?


なお、この理由には他にもまだまだいっぱい、沢山ありますが、
どれもまた話が長ーくなりそうですので(笑)、またいずれ機会
ありましたら書いてみたい(なるべく早めに)と思っています。

ほんと困ったことに、VBA界隈には修行と称して他人にめんど
くさい事をやらせよう、やらせよう、する人が多い思いますが、
私は、マクロでのそれは実にナンセンスだと思います。

なぜならば、

そもそも「面倒くさ~い」を撃退する為にやるのがマクロである
からです。(このメルマガ冒頭のサブタイトルにもあるように)
だから、そのような面倒を好む人はそもそもが「本末転倒で、
マクロの本質が解かってない」としか言いようがない思います。

世の中に数々あるマクロ言語に(VBAはその中の一つ)、
「変数名の宣言を強制される言語」というのは(VBAも含めて)
ただの一つも在りません。当然、在り得ません!

マクロ本来の目的である面倒なコンピュータ操作の自動化が
やりたくてマクロを学んでいる人は、今日お話ししたVBAの
正しい使い方いうのを心してやっていってくださいね。

決して、(VBA界隈の誰かに騙されてー)要らんオプションの
設定をしてしまったりはしないよう、くれぐれもご注意ください。

とにかく、マクロは手軽でなければ意味がありませんから、
そんな仰仰しい設定の強制なんてやってしまったら、絶対に
ダメ!ですよ。

 

■マクロ作りの基本は動画で学ぼう!

YouTubeの公式チャンネルはこちらです。→ マクロを10分で理解する動画

 

 


3千円のVBA参考書では無理ですか?

2018-09-27 06:24:44 | VBAあるある

Q.

3千円のVBA参考書では無理ですか?


A.

これは、はっきり言ってしまいますと、長年プロの厳しいシステム開発の現場で 若いプログラマーへの指導をしてきた私から言わせるとですが、 この分類 がちゃんとわかっていて初心者には難しいカタカナ専門用語なしで教えられるレベルの人は、残念ながらVBA参考書のライター レベルの人には一人も見当たりません。

そもそもが、現場の優秀な売れっ子のプログラマーいうのは、今どき引っ張りだこになりますので とても参考書など書いてる暇などあるわけがないですし、本の微々たる印税稼ぎをするよりも、 システム開発の現場でガンガン稼いだ方がずっと遥かに割がいい、単価も高いです。(つまり、はっきり言ってしまいますと VBA参考書のライター=厳しいプロの現場では通用しない暇なプログラマー、であるわけです。)

で、それ故に、本屋やアマゾンで売っているVBA参考書は、どれもカタカナ用語の羅列になっています。 これはどのような専門分野でありましても同じ思いますが、ちょっと詳しい人であれば専門用語を書き並べて教える という事なら誰にでも出来る話です。ではなくて、初心者にもわかり易く、専門用語を使わずに、 ビギナー相手に適切に教えられるレベルに達するまでには、それ相応の深い経験を要するわけです。

 一例ですが、VBAはマクロ言語であるにも関わらず(マクロ言語としてVBAを使いたいビギナー相手 にも関わらずー)「スペル間違うと困るから変数名宣言はオプション入れて強制しろ・・・」だとか、 プロから見たらそんな失笑されるような事を、平気で本に書いているような人が VBA参考書の場合には非常に多く見受けられます。

 VBAをマクロ言語として使う場合には、変数宣言の強制は要りません無用の長物です。あくまで 我々の学ぶべきVBAいうのは、マクロ(操作の自動化)の為の言語なんですから そのような面倒はさらさら必要ありませんし、マクロ言語では(VBAを含めて)変数宣言を強制させる 言語というは当然、ただの一つもありません。そもそもが変数宣言の目的はスペルチャックなんかでは 毛頭ありません。

 例えばですが、ワードにもスペルチェックってデフォルト設定である思いますけど(勝手に 余計な波線張られて何とも邪魔なあの機能です・・)、あれって必要ですか?
 私なんかはそれ、いちいちうざったいですので ワード使う時はその設定は外して使うことが多いですが、 要は、「スペルチャックも出来ないでそれ機械に頼ろうなんてヤツは、文章書くな!」ってことですよね(笑)。 それ、プログラミングでも同じです。「自分で付けた変数名のチェックも出来ないようなヘッポコな奴は、 プログラムなんか書くな!」っていうことです。(笑)

 初心者に散々余計な勉強に時間使わせておいて、あげく、変数名のチャックだけは手間なく自動で 機械にやらせろ?って言っているわけです。まっこと本末転倒です!
 仕事のできる賢くまともな人いうのは皆、メール送信時での「相手の名前」も、プログラミング時での「変数の名前」も、 そうした間違えたらいけない部分は必ずコピッペして使いまわす、そのクセが付いているものですね。 いちいち無意味で面倒で思考中断を招く変数宣言をする暇があったなら、そのコピッペのクセを付ける練習をしたほうが 余ほどマシな時間の使い方だ、と私は思います。

だから、到底間違ったそのような主張やカタカナ用語の羅列となっているVBA本は、 たとえ3千円だからといっても絶対に買ったらいけません。3千円の本を10冊以上も買って1つの マクロも組めてない言う人を、私は大勢知っています。

 (すみません、ちょっと私もそのような間違った事教えてる人へのストレスいうのが溜まっていました 為、参考書ライターの皆さんにはちょっと今日は厳しいことを言い過ぎたかも知れません。m(__)m)

 


高額セミナーにも行きたいのですが・・・

2018-09-25 06:49:18 | VBAあるある

Q.

できれば、巷によくある高額セミナーにも行きたいのですが、今お金がありません!

A.

 私も、です。お金はありません。(笑)

一つ、お金の使い道で迷った時の私の場合の判断基準なんですが、
 「投資」「消費」「浪費」この3つに分ける、ということにしています。
 
これに使うお金は、この3つのどれに当てはまるのか?

と考えてから、 じゃぁ、使うべきかかどうするか を考えます。

この判断基準は人それぞれと思いますが、
例えば年末に今年使った主な購入品のお金を この3つに分けてみて、
このうち「投資」の金額の割合が多かったいう年には、

「来年はきっといい年になるな~」

という予感がしてきます。自分の気持ちが前向きになれている証です。
自分のお金の使い道をちゃんと把握しておけば、おのずと未来は見えてくる。
それが「自分投資」というものであるに間違いはない思います。

でも、その「投資」先も間違ったら元も子もありませんですから、
例えば、VBAの 高額な日帰りのセミナーへ行ったとしても、
3千円の本の内容を1日で詰め込むだけ詰め込まれる というだけでありますし、

決まって最後にやる演習では、予め主催者が用意した(直しやすい)
サンプルコードを渡されて、「はい、よく出来ましたね!」と、
そう ただ出来そうな気にだけさせられて、気持ち良く帰される・・・。(笑)

でも実際、帰って実務であなたが作りたいマクロのそのような
直しやすいサンプルコードは 誰も用意はしてくれてませんから、
ネット上でどこの誰が作ったのかもわからない(意地の悪い人が
わざと複雑怪奇に組んだ)サンプルコードに翻弄するだけ、
となってしまうわけです。

また、数十万円するPC教室のVBAコースで学ぶ場合では、
ビデオ学習にて上記と同じ詰込み をされるだけになる思いますし、

よく聞く話では、VBAコースに申し込んだつもりが

「あなたはまだマクロを習うレベルに達していないですから
まずはこっちのエクセル操作のコースを受講してください。」

なんて言われた経験ある人が 実に多いという事実です。

けど、マクロは主に、現行でやっている面倒な作業の自動化がしたくて習う
ものであるわけなんですから、 普段の手作業でよく使っている機能以外に、
別の余計な操作を覚える必要というのは毛頭ありません。

それは、その教室のVBAコースで教える範囲が理解できるようにする為
でしかありませんので、 決してあなたに必要な勉強でも、あなたの能力不足でも、
ありません。

いわゆる「勉強の為の勉強」を強要される、というだけです。

なので、私は普段からこのような相談を受けた場合、
VBAコースの他にもエクセルの(初級、中級、上級 など)コースが
用意されている講座に行ってはなりません!と、アドバイスしています。

でないと、必ずあなたには必要のないエクセル操作のコースも
受講強要される事になりますし、 そのような講座で最上級コースに
位置付けられているVBAコースに、いきなり受講してきた 生徒さんに、

そう易々と最上級者向けであると定義されたVBAコースをマスターされて
しまっては、 教室側も商売あがったりとなって 困るわけです。
(なので、Excel教育の世界には、 VBAはわざと難しく教えている・・・
という悪意ある業者が少なくないです。くれぐれもご注意ください。)

そもそもが、Excelの操作を教えるのとプログラミングを教えるのとでは
根本的に全くの別物ですから、それを同じインストラクターに教わる
ということ自体が ちょっと考えられません。

マクロは必ず、マクロ専門の先生から教わったほうが良いと、
私は正直そう思います。

 


当マクロ講座について

2018-09-18 09:16:33 | VBAあるある

オブジェクトだと言う要素を取り除いてしまえば、VBAは至って簡単に
(ほぼ昔のBASIC言語のレベルに・・)なります。

けれど、VBAからそれ取り除いて教えられるという先生は存在しません
でした。VBA教える人は皆こぞって、
「オブジェクトオブジェクト、メソッドメソッド、プロパティプロパティ、」
ばかりを言っている。

なぜならば、それには高度で幅広いプログラミング言語の知識や能力というのが
必要になってくるからです。それは言わば、言語の中身を分析して分類する
能力です。

そもそもが素人向けの言語であるVBAを教えるような人に、そのような
高い能力と豊富な経験を持った人というのは残念ながら一人も見当たり
ませんでした。

そこで、SE暦25年で富士通ラーニングメディアのメイン講師を計8年
務めました私が満を持して、まぐまぐのメールマガジンという当時ネットで
大人気だった媒体を使いまして、その解決に乗り出したという次第です。

以来14年間、メルマガによる情報配信を続けてきまして、この分野では
異例の読者1万人にまで到達することができました。読者の皆さまには
日頃よりの御支持並びに御支援、誠にありがとうございます。

それで、私が分かってるだけでも数かぞえきれない程の成功者の実績を
着実に積み上げて参りました。働き方改革のブームにも乗ってか、今と
なっては減りはすれども決して増えることのないメルマガ読者の登録数も、
どんどん増え続けています。

 さぁ、一緒にマクロを始めましょう!!

▼Go!Go! エクセルマクロをはじめよう!(まぐまぐ無料配信の登録)    
 ホームページ ←画面右上方にメルアドの登録窓があります。

 


VBAあるあるQ&A

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

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

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

 

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

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

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