みなさんもう既にご承知のように、先週いよいよマイクロソフト社の
最新OS「Windows7」が発売となりましたが、なに分にも
前回のVistaがすこぶる 重たく、使い辛く で評判が悪かっただけに、
今回の「Windows7」は発売前から評判も上々、その分ユーザーの
期待も高いようです。
Excelの方も、来月には「Office 2010」のβ版が公開になるそうなので、
予定されている通り来年の前半には正式版がリリースされるのだろう
とは思いますが、
今回の「Windows7」にはXPモードというものが付いていますし、
「Office 2010」の方もマクロを含めて2007と殆ど従来機能に変化は
ないとの報告も出ていますので、
今回のマイクロソフトのバージョンアップに関して言えば、
我々マクロユーザーにとっては前回の様な右往左往もなく
「特に今までと変わりなし。」ということでいけるだろう
と思います。
無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」
【お便り】
> 三太郎様
>
> 昨日問い合わせをさせていただきました、○○です。
> 早速のお返事、ありがとうございました。
>
> 全くの初心者なので、正直のところ、他の教材と違って何がい
> いのかよく分からなかったのですが、勉強法について教えてい
> ただいたサイト「効率的なマクロの学習方法」
> を拝見させていただき、大変驚きました!言われてみればこん
> なに簡単にマクロが習得できる方法はどこにもないことがよく
> 分かりました。
> 今更ですが、どう勉強するのか?ではなく、どう活用していく
> のか?が最も大切なことであるということを気づかせてくれま
> した。
> 後は、どう自分流にアレンジしていくのかを主眼においてチャ
> レンジしていきたいと思います!
> 今後ともお世話になると思いますので、どうぞ宜しくお願い致
> します。ありがとうございました。
>
【三太郎より】
ご理解いただけたようで何よりです。
それでは、がんばってチャレンジ続けてくださいね。
また、お便り(その後の近況「こんなマクロを作りました!(^^)」
とか・・・、)楽しみにお待ちしています!
【Q.】
AccessとExcelを主に使用してきたため、自然とマクロに興味を持つように
なり、パソコンスクールで、Excel VBA スタンダードとAccess VBA ベーシックの
講座を申し込みました。(申し込んでしまいました?!)
先に、Excel VBA スタンダード取得に向けての勉強を開始したのですが、
頭がくらくらするような専門用語ばかりで、なかなか身につかず、悩んでいます。
勉強に嫌気が差し、もう一度、Excel VBA が楽しいと思えるようになりたいの
ですが・・・。
【A.】
どんなに「簡単な」、「やさしい」、「絶対わかる」、「コツがある」などの
タイトルの付いた市販の参考書であっても、また、そこいらのどんなスクールや
セミナーであっても、
バカの一つ覚えのように
「プロシージャとは?」とか、
「オブジェクトとは?」とか、
「プロパティとは?」とか、
「メソッドとは?」とか、
「ステートメントとは?」とか、
使用するテキストの各章は、必ずそのような専門用語の解説から始まって
いるだろうと思いますので、まず、そういったことから教えられる
ことになると思います。
このような「難しい専門用語を理解しなければ
マクロは組めるようにならない!!」と言った
PCスクールや通信講座、市販の参考書から請負の
”誤った神話”を
あなたは信じてしまっているのではありませんか?
このマクロ講座のテキストには、
「プロシージャ」、「オブジェクト」、「メソッド」、
「プロパティ」、「ステートメント」、・・・、etc、
といった類の 難しいカタカナ言葉の専門用語 は一切書いてありません!!
その理由は簡単です。
それらを覚える必要はないからです。
▼賢くマクロ作りのコツをマスターする方法が満載▼
マクロのプロが直伝する「エクセルマクロ成功の鉄則」
【Q.】
テキストボックスでシート上にマクロの実行ボタンを作成しましたが、
これをエンターキーで実行する方法を教えてください。
マウスを使わずに実行できた方が効率よく仕事ができるので・・・・
【A.】
これにはまず、シート上に作成したテキストボックスをマウスを
使わずに選択状態にさせておくという必要があるわけですが、多分
(私の知る限りでは)この方法はないだろうと思います。
もしあったとしても、シートにいくつかのテキストボックスや
その他のアイテムがあった場合には、TABキーなどを何度も
押さなくては目的のボタンにたどり着けないということになります
ので、かえって面倒ですね。
それで、そもそもテキストボックスで実行ボタンを作る目的という
のは「マウスクリックでマクロを実行させたい」という意味なので、
もし、マウスを使いたくないのであれば、ボタンを作ること自体に
意味がありません。
で、そうしたい場合ならボタンではなくショートカットキーに登録
した方がいいだろうと思います。
ちなみにその登録の仕方は、
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面で
実行したいマクロ名を選んで、右下の「オプション」ボタン→
マクロオプション画面に何かアルファベット(1文字)を入れて
OKボタンを押す。
これで、Ctrlキー+そのアルファベットキーで、マウス要らず
の一発でマクロが実行できるようになります。
▼ YouTube再生25万回突破しました!
「エクセルマクロを10分で理解する(動画)」
【Q.】
この講座でマクロを動かす時のボタン等作成して命令文を作成しますが、
そのコードとユーザーフォームで作成するボタンはちがうのでしょうか?
それと、ユーザーフォームがわかる様な教材はありますか?
あれば教えて下さい。(むすかしい言葉とか横文字はないやつがいいです)
【A.】
違うか?と聞かれれば殆ど同じですね。
ただ、両者の違いはというと、ボタンにその命令を定義する方法が違う
ということぐらいです。
具体的には、前者のボタンは、作ったボタンを右クリックして命令文を
選択するといったことでできますが、ユーザーフォームの方では、その
命令文を呼び出すための命令文をプログラム上に書くという必要があり
ます。(まぁ、たった1、2行の話ですが。。。)
それと、もっとも根本的の違いというのは、ユーザーフォームの方は
ボタンだけでなくいろいろな入力フィールドが配置できるという点に
あります。
マクロを動かす前に、その条件となるデータを作成したフォーム上で
入力ができるように入力フィールド(入力欄)を自由に自分で何個も
作れるわけです。
ただ、これもシート上のセルを入力フィールドと同様な扱いですれば
フォーム上での入力と似たようなことはいくらでもできますし、
ユーザーフォームを作ってやるよりも(ユーザーフォームの作成自体
がちょっと大変ですので)、遥かにこの方が簡単には作れます。
また、簡単にユーザーフォームがわかる様な初心者向けの教材といった
ものはまず無いと思います。
その理由は、マクロの初心者の方がいきなりユーザーフォームの勉強
を。。。
というのは、順番としてちょっと無謀(?!)だからです。
ユーザーフォームを作るには、ある程度マクロが作れるようになって
から(中級者レベルに達してから)、というのが一般的な流れです。
まずは、シート上のセルに入力欄を作り、&実行ボタンを配置する。
というところから始めてみてください。
無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」
【リクエスト】
> 私は、毎日、朝晩血圧を測って1ヶ月の表にしています。
>
> 日 曜日 血圧値(朝) 血圧値(夜) 摘 要
> 1 水 上/下 上/下
> 2 木
> 3 金
> 4 土 ←青色
> 5 日 ←赤色 ←日曜の列は薄い橙色の網掛け
> 6 月
> ・ ・
> ・ ・
>
> 日付に曜日をつける。
> 土曜と日曜は、日付と曜日に着色。
> 日曜の列は、薄い橙色の網掛け。
> 年と月を入力するだけでこの3つのことができる表の作リ方を
> 教えてください。
この方は、この血圧表の下に折れ線グラフを表示させて、日々の健康管理
をされているそうです。(私もぜひ見習いたいものです。)
ちなみに、私の場合は血圧というよりも入浴時に毎日、昨年購入した体脂
肪計にのっていますので、ぜひそちらの数字を記録したいと思っています。
みなさんも、日ごろ何か気にしている数字などはありませんか? そんな
数字がある方は、今回のリクエスト特集をぜひお役立てくださいね。
(Lesson 24~32 出典)
リクエストもできる無料メルマガの登録は、
▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」
【Q.】
2重・3重の条件に合う、マクロ作成はどうしたらいいのでしょう
か?
「セルの文字が ”○○” で 紫色のになっているセルの下の
数字が0より多い場合、セルの色をローズにする」というマクロ
を作ろうと思っているのですが、最初の ”○○” と 紫色の
セルの2重のIf文を作る時点で行き詰まってしまいました。
If 文で & を入れたらエラーにならなかったので、できるのか
と思ったのですが、うまく出来ませんでした。
If c = 39 & a = "○○" Then 'むらさき で ○○
【A.】
これは、
If c = 39 & a = "○○" Then 'むらさき で ○○
ここは & ではなくて、 And を使います。
If c = 39 And a = "○○" Then 'むらさき で ○○
とすればOKです。
ちなみに、3重のときは
If c = 39 And a = "○○" And b = "△△" Then
みたいに、以下4重でも5重でも And を並べていけばできます。
ただ、こうやって何重にもIF文の条件が続くと、どのような
条件何だかどんどん分かり辛くなっていってしまうだろうと思
いますので、重複条件の場合には、
If c = 39 Then
If a = "○○" Then
・
・
・
End If
End If
といった書き方をする方がよいでしょう。
何れにしても、より早くマクロを完成させたいと思うのであれば
できるだけ「より分かりやすいプログラムを書く」ということが
最も重要であるということだけは、間違いありませんね。
【Q.】
エクセルの最下行に到達すれば(あるいは最終行が空欄であれば)
ループを終了したいのですが、その方法がよくわかりません。
自分なりに何度も何度も試行錯誤し、ようやくブサイクながらも
ループマクロを作ったのですが”エクセルの最下行に到達すれば
ループを抜ける”のところでつまづいています。
Do
Selection.Copy
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.End(xlDown).Select
選択範囲 = Selection.Address(ColumnAbsolute:=F・・・
If 選択範囲 = Range("A65536") Then
Exit Do
End If
Loop
【A.】
ちょっとこのプログラムは頂けませんね。
ここで使っているDo Loop文というものは、大変に危険性が高いもの
なので、当講座においてはこのようなループの回し方は一切教えて
いません。
それは、いわゆる無限ループに陥りやすく、特に初心者の方が使う
べきものではないからです。
※このような Do ~ Loop 文は大変危険ですので、
初心者の方は絶対に使わないようにしてください!!
で、このようなループの場合にも、当講座でいつも扱っている
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最下行
や
For i = 1 To n
・
・
Next i
といったものを使えば、確実に必要な分の行だけのループを回すこと
のできる(無限ループに陥ることの無い)プログラムとなりますから、
ループを回す場合には、必ずこうした安全性の高いプログラム作りと
いうことを心がけるようにしてください。
【Q.】
A列~E列まであり、A列とC列は1行目から3行目までが
セルの結合をし、他の列はセルの結合がない場合とか、
出力シートの項目の下5行に計算式が入っていて非表示
にしている場合に、
n = Cells(Rows.Count, "A").End(xlUp).Row
の最終行の判定がうまくできないみたいで、うまく貼り
付けが出来ません。
【A.】
セル結合がある場合には、結合を一旦外してから貼り付け
をし、その後で再び結合するということをします。(この
操作は「新しいマクロの記録」を使えば簡単にプログラム
作成できます。)
同様に、非表示行がある場合にも一旦非表示の行を再表示
してから、最終行を取得し、再び非表示に戻す、という
手順を踏むことになります。