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

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

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

韓国ラーメン「韓韓麺」です。


私は辛いものが苦手でしたが、この店の辛さがクセになり、通っているうちに今では多少辛いものを食べても汗一つかかないくらいになりました。

まぁそんなになっても別にしょうがないんですが…

(^_^;)
麺の種類が選べるのもいいですよ。太麺(うどんみたい),韓国細麺,中華麺の3種類から選択できます。個人的には"ビビン麺"にハマってます。舌が火を噴く辛さですが、なんとも言えないウマさがあってついつい頼んでしまいます。。

o(^-^)o

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

さて、前回の続きです。
関数式で「*」印を5行おきにプロットし、その印がついている行に一行ずつ行挿入していくマクロを作成します。今回と次回にわたってそのようなマクロを作成したいと思います。(使い捨てマクロがどんなものかを見ていただくためにとりあえずかけ足で一つ作ってみますね。。)

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

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

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

(4)「ガイドシート(手順4)」のように直接編集。追加行の意味は以下の通り。
・act=act*2:Inputboxでユーザーが入力した数値を2倍します。
・Do Until~:「Loop」の前までの処理を、gyouの数値がactの数値とイコールになるまで繰り返します。
・gyou=gyou+1:gyouの値を1増やします。
・Loop:「Do Until」と対で使用します。

 当然ですが、行挿入すると、対象となる全体の行数が1つ増えま

  す。もし全部の行に1行ずつ挿入すると対象となる全体の行数が

  2倍になるので、念のために対象行(actの数値)を2倍しておきま

  す。Activeになっている行(gyouの数値)に1ずつたしていき、gyou

  の数値がactの数値とイコールになるまでこれを繰り返します。

(5)[ALT]+F11でEXCELシートに戻り、A列を範囲指定し、[挿入(I)]→[列(C)]。

(6)A1セルに「挿入Flag」と入力。次号で、この欄に「*」印を入力した行について行挿入を実施するマクロを完成させます。

今回作成したマクロでは、「Do Until ~ Loop」の間に、行を一行挿入した後、gyouの値を1増やしなさい、という命令しかしていませんので、例えばA1セルにカーソルを置いてこれを実行すると、次のようになるはずです。

まずダイアログボックスが出て来て、何行ある表なのか確認して来る。
ここで例えば「2」と入力すると、gyouの値が2*2=4になるまで行挿入を実行する。

実際には、gyouの値=actの値=4になったときには挿入終了なので、空白の行が3行挿入されるだけとなります。

次回は、このLoopの間に「If~」文を入れて「*」印を判別しながら行挿入を実行していくマクロへと進化させます。

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

マクロ編集の方法(ダイアログボックスを出してみる)

それではテーマを元に戻しまして、例の表について、5人ずつまとめて表示するために、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)」のように直接編集。意味は以下の通り。
 ・Dim gyou As Integer:gyouという変数を今後整数として使用します。
 ・gyou = ActiveCell.Row:とりあえずカーソルのある行ナンバーを gyou という変数に入れます。例えば5行目にカーソルがあれば gyou=5 となります。
 ・Rows(gyou).Select:gyou行を選択します。gyou=5であれば、5行目を選択します。
 ・Selection.Insert Shift:=xlDown:選択されている行に一行挿入します。
 ということは、行挿入したい行のどこかのセルにカーソルを置いてこのマクロを実行すれば、自動的に行挿入ができる、ということです。

(5)手順(4)までの動作を確認したら、続けて「ガイドシート(手順5)」のように編集。意味は以下の通り。
 ・Dim act, gyou As Integer:gyouという変数とactという変数を今後整数として使用します。
 ・act = InputBox("全部で何行?", "How Many Rows"):「How Many Rows」というタイトルのダイアログボックスで、「全部で何行?」という質問を表示させ、ユーザーからの回答をactという変数に入れます。

(6)[ツール(T)]→[マクロ(M)]→[マクロ(M)]として出て来る「マクロ」ウィンドウのマクロ名「行挿入」を選択して「実行(R)」。「全部で何行?」と聞いてくればOKです。ここで入力する数値は次回具体的に使用していきたいと思います。

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

Page 3 / 3123

最近の投稿