The Road to EXCELER ~エクセラーへの道~
ブログ
  • HOME »
  • ブログ »
  • 月別アーカイブ: 2006年11月

月別アーカイブ: 2006年11月

使い捨てマクロの考え方(2)

メインで使っているPCが立ち上がらなくなってしまいましたっ!

。(´д`lll)

電源を入れると"ヴ~~ン"という大きな音が永遠に響くだけでHDDも読みに行かず、モニターにも何も映りません。せめてVISTA搭載のマシンが出るまでもってくれれば良かったんですが…。何度も電源オンオフを繰り返すしかできずに、入院させるしかないのか悩んでいます。今古いミニノートで打ってますが、めちゃくちゃやりづらいです。。

(T▽T;)

さて、気を取り直して前回の続きですが、ここで言う"使い捨てマクロ"の条件は次の通り。

1.自動記述機能を使うのが基本。

⇒自動記述+αで作成します。

2.速く動かそうとする必要は無い。

⇒マクロはプログラムがきれいに記述されていなくても結構速く動きます。よって、自動的に記述される無駄なスクリプトを探して修正したりしません。またきれいに記述しようとする必要もありません。

3.エラーが発生してもかまわない。

⇒エラーが発生したとしても、アウトプットが目的通りのものになっていればいちいち修正したりしません。

4.覚えるコマンドは数個のみに限定。

⇒必要最低限のコマンドだけ覚えます。

5.中学生レベルの英単語の知識でなんとなく読む。

⇒自動記述されるコマンドは自分で操作したことがそのまま書かれるだけです。何も知らなくてもなんとなくわかるものです。

6.できるだけ短く作る。

⇒業務としてはボリュームのあるものでも何がやりたいのかをはっきりさせ、その業務をできるだけ小さい単位に細分化。短いマクロを複数作成するようにします。

7.難しい場合はあきらめる。

⇒マクロを作成する目的はあくまでビジネス上の業務を効率的にこなすことです。一つの目安として、30分かかって正常に動作しない場合はマクロを作っている時間の方がもったいないので、あきらめて手でやりましょう。

以上の7つを念頭に置いて、さあ始めましょう!

使い捨てマクロの考え方

炭火焙煎コーヒー茜屋珈琲店です。


最近なかなか見かけなくなった本格的な珈琲屋さん。上品なカップでおいしいコーヒーをいただけます。ちょっと高いけど。。

σ(^_^;)

゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚

ザッと流して説明してきましたが、要は、繰り返し発生する作業を手で何回もやるのは面倒くさいので、エクセルに自動でやってもらおうというのがマクロです。

マクロはVBA(Visual Basic for Application)という言語で記述され、様々な命令文に従って順番に処理を実行していきます。
しかし、この命令文にはたくさん種類があって覚え切れないだけでなく、いろいろとルールに従って記述することになっているので、きちんとマスターするにはある程度勉強する時間が必要です。
プログラマーやその道の専門家ならともかく、私たちはそうではないので、そんな勉強には興味が無いし、そんな時間があれば自分の趣味や仕事にあてたいものです。
ここで言う"使い捨てマクロ"は、実際のビジネスの場で手軽にマクロを作って効率的に仕事を進めることを目的として、次の条件に基づいて作成していくシンプルマクロです。。

「*」印を探して行挿入するマクロを作成する(2)

さっそく前回の続きです。。

関数式で「*」印を5行おきにプロットし、その印がついている行に一行ずつ行挿入していくマクロを作成します。

再掲[Sheet1]

A B C
1 番号 名前 生年月日
2 001 AAさん 1975/10/9
3 002 ABさん 1975/9/23
4 003 ACさん 1974/8/5
5 004 ADさん 1966/3/2
6 005 AEさん 1962/2/19
7 006 AFさん 1966/4/23
8 007 AGさん 1974/6/11
9 008 AHさん 1948/10/11
10 009 AIさん 1974/12/6
11 010 AJさん 1964/11/11
12 011 AKさん 1957/1/3
13 012 ALさん 1954/11/17
14 013 AMさん 1947/4/18
15 014 ANさん 1970/6/15
16 015 AOさん 1968/5/26
17 016 APさん 1969/4/3
18 017 AQさん 1963/1/9
19 018 ARさん 1947/11/19

(1)前回使用したファイルを開きます。保存していなかった方は、前回ご紹介した手順でまずマクロを生成してください。

(2)[ツール(T)]→[マクロ(M)]→[マクロ(M)]。

(3)「マクロ」ウィンドウのマクロ名「行挿入」を選択して「編集(E)」。

(4)「ガイドシート(手順4)」のように直接編集。追加行の意味は以下の通り。
・If①Then②Else③End if:「もし①であれば②のActionを,そうでなければ③のActionを実行しなさい。」という意味です。この場合、「もしアクティブセルに「*」があったら一行挿入してセルを二行分下に移動させなさい。「*」が無ければセルを一行分下に移動させなさい。」という意味になります。
・Cells(gyou,1)~:gyou行目一列目を選択します。

アクティブセルに「*」マークがあったら一行挿入しますので、次に移動すべきセルは二行分下になります。これが③の「gyou=gyou+2」に相当する部分です。

(5)[ALT]+F11でEXCELシートに戻り、A2セルに、「=IF(MOD(ROW()-2,5)=0,"*","")」と入力して[編集(E)]→[コピー(C)]。

(6)A2セルからA19を範囲指定し、[編集(E)]→[貼り付け(P)]。

(7)そのまま[編集(E)]→[コピー(C)]→[編集(E)]→[形式を選択して貼り付け(S)]とし、現れた「形式を選択して貼り付け」ウィンドウで「値(V)」を選択して「OK」。

(8)[ツール(T)]→[マクロ(M)]→[マクロ(M)]とし、現れた「マクロ」ウィンドウでマクロ名「行挿入」を選択して「実行(R)」。

(9)「How Many Rows」ダイアログボックスに行数を入力し、「ガイドシート(手順9)」のような結果になればOKです。

「Do Until ~ Loop」の間に、「If ~ End if」文を挿入することにより、最後の行まで一行ずつ「*」マークがあるかないかをチェックさせ、もしあったらその行に一行挿入する、というマクロになっています。

手順(5)の「=MOD(ROW()-2,5)」という関数は、アクティブセルのある行の行番号から2を引いたもの(数値データは2行目から始まっているので、2を引いています。)を5で割り算したときの余りを求める関数です。If関数と組み合わせ、余りがゼロなら「*」マークをつけるようにしています。

使い捨てマクロのイメージはだいたいつかんでいただけましたでしょうか。次回から順を追ってゆっくり説明していきます。

<<ガイドシートURL>>
http://www.tcat.ne.jp/~ryu/PLE/Macro/54.pdf

Page 2 / 3123

最近の投稿