皆さん、最近マクロ作成の進み具合の方はいかがでしょうか?
私事で恐縮なのですが、昨年来より本業のITコンサルタントの
業務の方が「忙しい」「忙しい」と言って、
無料メルマガ講座の方もあまり出せていない状況となって
おりましたが・・・、
実は、そんな中でこんな教材を一つ、作っておりました。
「Go!Go! エクセルマクロをはじめよう!」初となる中級教材
題しまして、
”実践ステップアップ講座「文字列加工・日付操作」特訓編”
です。
かねてより、この上の中級レベルの教材は無いのか?未だか?
と、
多くの方々からご要望をいただいておりましたので、その都度
「ただ今、製作中です!」「春頃には出来ます!」「ご期待くだ
さいね!」・・・などなどと、
もぅ2年半ぐらい前からずーーっと言い続けてきましたので
(言い訳をしまくってきましたので ^^; )、
もういいかげんに本気で完成させないと・・・ということで、
休みを返上して中級教材作りに力を注いでおりまして、この程
ようやくと完成に至りました!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
★待望の中級教材(第1弾)が完成しました!★
エクセルで扱うデータは数字だけじゃない!!
実践ステップアップ講座「文字列加工・日付操作」特訓編
→→ 中級セミナー収録の生音声ガイダンス付き教材 ←←
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
▼マクロを始めてみたい方へ▼
【無料】7日間メールセミナー(手軽に始める1日10分のマクロ講座)
「お昼休みに始めよう」プロジェクト参加者登録受付中です!
こちらから→ 「Go! Go! エクセルマクロをはじめよう!」ホーム
只今、募集中の6周年記念イベントの『マクロ大賞』 こちら の
応募状況なんすが、、、
早くも、大賞候補とおぼしき作品が現れました!
でも、ちょっと言いづらいんですが、実はそれ
うちのパートの女性事務員が応募してきた作品
なんです。(完全に身内ですね。^^;)
なぜかといいますと、
弊社では契約社員でもアルバイトでもパートでも
誰でも採用者には、初めに
「これを1日10分、勉強しておくように。」と言って、
当講座の初心者マクロ教材 こちら を全員に配って
やらせています。
まぁ、1日10分という短い時間ですので
昼休みとか、3時の小休憩時間にでも
お茶でもすすりながら・・・
で十分にできる時間なわけですが、
特に、これに関しては勤務時間中に勉強することも
OK!としています。
なので、
弊社では事務系の職員であってもみんな
そこそこのマクロは自分で作れます。
しかも、
主に経理を担当している今回応募してきたその彼女は、
フルタイムの勤務ではなく、半日程度のパートタイム勤務者で、
今回、ぜひ私も応募したい!ということで、(その意欲を買って)
身内にも関わらず応募を認めることにしました。
それで、応募したマクロを見てみると
私もうなるほどの(?!) 実に素晴らしい作品です。
でもやはり、そこは身内なので
まさかこれを大賞にするわけにもいかないだろぉーなぁ、
でも、
プロはお断りとは言ったけど、身内はダメとは言ってなかったしなぁー、
他にこれ以上の作品が来なければ、まぁこれでもいいかなぁ、
などと、今、あれこれ迷っているところです。
まだ締め切りまでには時間もありますので、
さらに良い作品の応募を期待したいと思います。
■プロが直伝する「エクセルマクロ成功の鉄則」教材セット
我が家の愛犬、オスのトイプードル、毛色はレッドです。
愛犬とタコ
愛犬とママ
愛犬がアカ(服)
愛犬がアオ(服)
愛犬もジャパン(勝利の余韻・・・)
■関連エントリ
・いよいよW杯!日の丸の裏側写真
・ワールドカップのチケットでした。
Lesson145の補足ですが、
ちょっと、VBE画面の右上のHELP窓に「文字コード」と入力して
検索をしてみてください。
(もし、VBE画面にHELP窓が見当たらない場合は、メニューの
ヘルプのMicrosoft Visual Basicで検索窓が開きます。)
検索結果の一覧から、
上の方の「Character Set (0-127) (Visual Basic for Applications)」
をクリックしてください。
そうするすると、
「ASCII 文字セット (0 - 127)」というタイトルの画面(表)が表示された
と思います。
(もしこのHELPが表示できない場合は、インターネットの検索サイトで
「ASCII 文字セット」と入力して検索をしてすれば、ほぼこれと同じ表が
簡単に見つかると思いますので、Yahoo!などで検索してみてください。)
それでこの表が意味するところとは、
私たちがキーボードを使って打っている文字には必ず番号が付けられて
いるということで、
例えば、&マークは38番、@マークは64番、小文字のeなら101番、・・・
のようにです。(これらが、この表から読み取れる内容です。)
これらの番号は、VBAだけによらず表の下方に但し書きのあるもの
以外は殆どのコンピュータで共通する文字番号です。
で、
注目していただきたいのがこの表の左側の列の何だかよく分からない
部分で、何だか分からないという理由はこの0番~31番ぐらいまでは
人間の目には見えないもの(例えば、Enterキーのような)を扱って
いるからです。
今回のレッスンで登場した10番もその一つで、
「ALTキーを押しながらEnterキーを押す」なんていうキー
(文字)は文字としては表現のしようがありませんので、代わりに
Chr(10) というような表記をして表すことができるようにしている
わけです。
例えば、今回のマクロの
ActiveCell.FormulaR1C1 = a & Chr(10) & b & Chr(10) & c
の部分を、仮に
ActiveCell.FormulaR1C1 = a & Chr(38) & b & Chr(38) & c
と(10番→38番に変更)してみると、
その実行結果は(セルA4は)、
池中&玄太&80キロ
といった具合になります。(38番は&マークだから、、)
ちなみに、
少々難しい話になりますが、今回のレッスンで用いたの文字コードの
10番というのはラインフィード文字とよばれ、
ラインフィードとは、文字列を操作するための非表示文字である制御
コード(エンターとか、タブとか、バックスペースとか、)のひとつ
です。
でも、
そんな難しい話はどうでもよいことですので、例の如く、まったく
気にする必要はありません。(理解する必要はありません)
今回のレッスンで必要なのは、10番はセル内で改行させるための
見えない文字だ、ということだけ覚えておけば十分ですので、
賢い人はくれぐれも、
「貴重な勉強時間の使い道」を間違わないようにしてくださいね。
▼賢くマクロ作りをマスターするのコツが満載▼
プロが直伝する「エクセルマクロ成功の鉄則」教材セット
いよいよですねぇー、ワールドカップ。
岡田ジャパンは少々期待薄だとは言っても
やっぱ、ワクワクします。
南ア大会の開幕記念に
きょうはちょっと貴重な写真を公開したいと思います。
これって何だか分かりますか?
・
・
・
8年前、日韓共催ワールドカップの初戦
対ベルギー戦(埼玉スタジアム)で
私が撮影したひとコマ
試合開始前にあがる日の丸の中を撮った
という写真です。
実は、ちょうど私の席の前列で
上がってきた日の丸が止まってしまったので、
無理やり手を伸ばして引っぱりあげて
一緒にいった当時まだ小2だった息子に
日の丸の端っこを持たせて
必死に撮ったという貴重な画像なんです。
W杯の度に、今でもあの時の感動が蘇ります。
いなもーーとーーーーーうぉーー!
無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」
まずはお便りから、、、
> 約100種類くらいのマクロは何とか書籍を見ながら作成できる段階に
> なったかなと思います。でも、やはり「感性」がこの世界でも必要かも
> しれません。
> つまり、美的感覚といいますか、センスがある人とそうでない人とでは、
> 同じマクロを作成する場合でも大きな違いがあろうかと考えています。
これは、中級くらいのレベルに到達された方にはよくあるお悩み事
で、私もこれまでに何度となく同様のご相談を受けてきたわけなの
ですが、
結論から言ってしまうと、
これは深く考えずに、結果オーライで考えていったほうが良い
ということだと思っています。
(この場合の結果というのは、目的とする処理が、できるだけ短時間で
作成でき、且つ、メンテナンスもし易いマクロである、ということに
なります。)
他人の書いたプログラムが自分のに比べて一見、素晴らしく見える場合
も多々あることだろうとは思いますが、
(これは隣の芝生は青く見える的な話でもありますので、、、)
世の中、そんなにすっばらしいプログラムの組み方が出来る人間という
のはプロの中でもそうそう居るものではありませんし、
ましてや、素人のプログラマーの方が(そこまで目指してみても、時間が
掛かるだけで得る結果は少ないことでしょうし、)、
それは目指す方向が間違っているよ、ということをはっきりと言っておき
たいと思う次第です。
私はかれこれもう6年間、この講座を通じて大勢の素人プログラマーの
方々に簡単なマクロ作りの方法というものを教えてきたわけなんですが、
その中で一番重要な事とは、
まず自分が目的とする自動処理ができるマクロが作れるという
「応用力」と、
後々でそのプログラムの修正や機能追加が容易なものが作れるという
「メンテナンス性」、
この2つに尽きるのだと確信しています。
ですので、どうせ貴重な時間と労力を使うのであれば、
もっともっとこの2つを身に付けるための訓練に時間を費やすべきだ!
と考えるわけです。
その辺は、当テキスト教材のタイトルにもなっている「成功の鉄則」の章に
その思いを込めて詳しく書いてありますので、是非、こちらをご活用いただ
けると幸いです。
▼賢くマクロ作りをマスターするのコツが満載▼
プロが直伝する「エクセルマクロ成功の鉄則」教材セット
まずはお便りから、、、
> こないだExcel VBA Basicの検定を受けて70点最低ラインで
> 合格しました。三太郎さんのマクロをみててちょっと中身を
> 理解したくなって受験したんです。
おめでとうございます!
当講座では、マクロ作りに専念していますので専門用語も何も、
VBAの検定試験に役立つようなことは一切教えてはいないわけ
なのですが、、、
資格にもチャレンジしたという方々は、何故だか結構皆さん
すんなりと試験も合格しているみたいなんですよね。
ちょっと不思議な気もするわけですが、要するに
勉強の順番として
①まず、とにかくある程度のマクロが作れるようになる。
②そのあとで、用語や理論を試験の参考書でちょっと学んでみる。
③VBA資格の検定試験を受ける。
始めに当講座から学んでいただけた方は、必ずこのような手順
になると思いますので、それが功を奏しているのだろうと思って
います。
これが通常の他の教材や講座の場合では、
①まず、とにかく用語や理論を学ぶ。
②資格の試験を受ける。
③ある程度のマクロが作れるようになる。
というような順番となりますので、
まだ何もマクロを作った経験もなしに用語や理論を先に
理解しようとすると、相当な時間が掛かるばかりか、
もし仮に試験には合格したとしても(ただのペーパー
ドライバーのごとくとなり)、到底③には至らないで
終わるケースが大多数だろうと思います。
ということで、とにかく
「ある程度作れるようになってから、その後でもし必要であれば用語や理論も学ぶ。」
これこそが、VBA資格受験の際にでも合格への
最短の早道となる鉄則だ!
かしこい人の勉強法だ!
ということですね。(^▽^)V
Option Explicit とは、
結論から言うと、
変数名のミスを防ぐためにとの理由で付けているという人は付箋紙にでも、
「何か実行結果がおかしい時は、変数名をチェックしろ!」
とそう書いてPCやおでこにでも貼っておけば、いいだけです。笑
ただそれだけの事なので、変数名のスペルチェックに
5分と時間は掛かりません!
たったそれだけで、日ごろのVBA開発でオプション付けて
やっている不要で、ただ面倒な、Dim Dim Dim Dim の
Dim i As Integer やら、
Dim j As Integer やら、
Dim s As String だとか、
そのような無駄なDimのオンパレード書く為に、
せっかくのプログラミング思考がその都度中断を余儀なくされてしまう・・・。
という最悪の事態が防げるのです。
(仕事に集中できてる最中に、要らぬ電話が掛かってきたり
上司から話しかけられたりしなくなるのと、一緒です。。笑)
ですから、そうなるとVBA開発がえらく楽になりますし、
それがBasic言語のいい所でもあります。
第一それに慣れてしまうと、その様なオプションの無い開発環境の言語では
まともにプログラムの書けない人間になってしまうだけですよ。
まずは、実際にやって(オプションは外して)、
オプション付けてやっていた今と比べてみればよくわかると
思いますから(誰か他人の言うことをうのみにせずに!)、
実際にやり比べてみてから、自分で判断するようしてください!!
で、Excelを自動化する為のVBAプログラミングにおいて、
こんなものは断じて必要ありません!
Basic言語のマクロですから。。。
一般のプログラミングとマクロのプログラミングの
違いも知らずに、、両者混同してVBA教えてる人が、日本には多すぎます。。
そもそもが、
プログラムの変数ってプログラム上でデータを入れて置く為の箱でしょ。
じゃあ、Excel上でデータを入れて置く為の箱ってなんでしょうか?
そう、言わずと知れた「セル」ですね。
じゃあ、そのセルにデータを入れるときに、
いちいちデータの型なんか指定してますか?
セルのデータの型って、要するに、
[セルの書式設定]の[表示形式]の設定ですよ。
いちいち毎回、そんな面倒それやります?
それって、日付のデータなんかでよほど
自分が表示したいのと違う場合しかやらないでしょ!?
例えば、
"10/1"と入力したら"10月1日"と表示されちゃう時とか。
殆どの入力データは、デフォルトで
(つまりは、何も設定しないで済む表示形式の[標準]で)
使っていますでしょ。
で、Excelでデータ入れる時には殆ど
いちいち[表示形式]の設定(型の定義)なんてやらないくせに、
それを何故だか、
マクロ(VBA)になると「変数は必ずいちいち毎回定義しなさい!」
なんて言っているアホが大勢いるのです。。
マクロの言語なんて言うものは、間違いなく
そのアプロケーションの操作に極力近づけた使い方を
すべきものです。当選です。マクロとはユーザーが組むプログラムなんですから。
ExcelのVBAならば、
「極力、Excelの使い方に近づける!」
のが基本です。
それが、正しいマクロ言語の使い方になります。
いいですかっ!
「変数名のスペルチェックの為に変数定義の強制しろ(Option Explicit つけろ)」と言っているおバカな素人先生から、マクロを教わったら 絶対にいけませんよ!マクロ開発のプロとして(マクロ言語を知り尽くすプロとして)、 これだけは はっきり言っておきますよ。
そんなの解決策が間違ってる!言っているわけです。プログラムでも日本語の文章でも何でも、誤字のチェックを機械に頼るな!ちゃんと自分自身で出来るようにならないとダメですよ!って言う話です。
しかもVBAはたかだか素人言語にすぎませんから、 わざわざ、いちいち、「変数名を強制定義しろ」言ってる許せんヤツは、 プロのプログラマーからしてみたら (たかが、Excel自動化するだけのマクロ言語のVBAですよ!ベーシックなんですよっ!) 、ほんと、考えられないド素人!そのものです。まともな本職のプログラマーであれば、それに全く異論ない思います。VBAの世界はそんな素人先生ばかりで、、強く憤りを感じています。
Option Explicit とは、
これを先頭につけておくと、使用する変数は予め宣言しておかなければならない、という制限を設けるためのオプション設定です。
結論から言ってしまうと、
そもそも、マクロ言語に(VBAも含めて)変数定義が強制される言語なんてものは、ただの一つもありません。(for Applications なんですから・・・。笑)
しかも、ハードウェアがこれだけ進歩して高性能になってきた今この時代ですから、今どきのプロに一番人気のプログラミング言語である Python だって、そんな七面倒臭い強制はされません。
Dim本来の意味すらわかっていないただVBAに詳しいだけのド素人の面々が、「変数定義は強制すべきだ!」そうほざいているだけに過ぎません笑。たかがVBAで、そんな時代遅れな素人考え言ってしまったら、プロのプログラマー達からますますVBAが見下されて失笑すらされなくなりますから、、素人考えで物言うのはやめてください。)
ネット上には、よく
Option Explicit は必ず付けるべきた!
と言っている人が大勢いますが、
それはあくまで我々プロ(か、それに準ずるセミプロのレベルの人)の一般の高級言語(マクロ言語でない)を扱う中での話であって、
プログラム作りを本業とはしていない一般の Excelユーザーの方々が、より手軽に、より簡単に、自分のExcel作業を自動化するための目的でマクロを作りたいという場合(すなわち、マクロを組む行為)に、そんな(標準ではない)オプションの指定をするのは全くの逆効果です。
そもそも、
より手軽に簡単に、誰でもプログラムが作れるように!ということで開発された簡易言語であるBasic言語(VBAのBの部分に当たる)に、
わざわざ自ら要らんオプションルールを科し、プログラミングのハードルを上げてしまうような設定をするということ自体、実にナンセンスとしか言いようのない話だと思います。
素人プログラマーであるならば、(当の製造元のMS社も一般のOfficeユーザーが手軽に作れるプログラミング環境としてVBAを提供し、このような設定は標準ではなく、わざわざオプション設定としているわけなんですから、)
VBAはあくまで、少なくとも一般のユーザーレベルで利用する場合には、本来のベーシックな簡易言語だとしてとらえ、その特性を生かしたより手軽なプログラミングツールとして利用していくべきものだと思う次第です。
確かに私も、 お客様に依頼されてVBAで大掛かりな何万行のプログラムになるシステムを製造する場合には、このオプションはつけて開発を行っているわけではあるのですが、自分や社内で使うちょっとした便利マクロをVBAで組む際には、いちいち「 Option Explicit をつけて変数を宣言して・・・」なんて、時間の余計に掛かる手間な作り方は、一切しません。
まぁ要するに、自動化の為のマクロのプログラミングと、一般のプログラミング言語を使ったプログラミングとでは、当然、その本質も目的も作り方いうのも違ってしかるべきであるわけです。
なのに、
アマチュアのサンデープログラマーの皆さんが、プロと同じ作り方の「マネ」をしようとするから、(しいては、VBA教える方も素人に対して自分のやり方をマネさせようとするからゆえに)、必要以上に難しくなり、失敗し、挫折し、(*_*)...
ということになってしまう初心者の素人さんが非常に、これは多いわけです。
ベーシックな言語のBasic言語というのは、言うなればイージーでアバウトな使い方ができるというのが最大の言語特性ですから、(特別な場合を除いていちいち変数を定義しなくてもよいという仕様にもなっているわけで)それを自らわざわざ余計なオプションを設定して難しくし、よりハードルを上げてしまう、という理由などまったくないわけです。
あなたが、プロのプログラマーを目指しているという人ではない限り、自ら不用意にそのハードルを上げるようなオプション設定をしてはなりません!
私自身にしても、自分で使うちょっとした便利マクロを作る(数行~何百行程度の)といった場合に、Option Explicit なんてものをつけないで(変数の定義なんていちいちやらなくてよい方法で)、
気楽に、楽しく、アバウト感覚のイージーなVBAマクロのプログラム作りというのを楽しんでいます。