昨日に続いて、日経パソコンでの第3回目の連載記事の表の行を挿入するマクロに関する追加説明です。
まず、「単純作業の繰り返しこそ自動化せよ 」の2ページ目と3ページ目をご覧ください。
こちらで紹介したものは、表の行を追加・削除するマクロでした。
実行するたびに、ダイアログボックスが現れて、追加する行数や削除する行数を入力できます。
ただ、毎回毎回、このような表示が面倒という方のために、もっとシンプルなマクロを紹介いたします。
<目次>
このマクロでできること
カーソルを表中に置いてある場合、カーソル位置の下に指定した数の行を挿入します。
以下のように2行目にカーソルがあります。5行追加してみます。
5行追加されて、カーソルが追加した行の先頭に行きました。
また、同様にカーソル位置の下にある指定した数の行の削除ができます。
上記のように3行目にカーソルがある状態で、100行削除するマクロを実行します。
3行目以降全てが削除されて、表は2行だけ残ります。
上記のように、指定した行数が、表の実際の行数を上回る場合には、カーソル位置の下の行を全て削除して処理が終了します。
表の数十の行を自動で削除するのは爽快です。
自動処理の動きが見えると、なぜか得をした気分になるから不思議です。
意味もなく、何度も表を書いてまた削除して、、、。繰り返し実行してしまいますね(笑)。
マクロの解説
(1)行の追加
5行追加するように設定しました。
挿入する行数を変更する場合には、この5の数字を変更します。
(2)行の削除
100行削除するように設定しました。
カーソルより下にある行を全て削除することを目的にしていますので、この数は200行でも300行でもかまいません。
5行や10行に設定してもいいですし、1行にすれば、内容を確認しながら1行ずつ表を消す場合にも使えますね。
いずれのマクロも、Informationプロパティを用いて、カーソル位置が表内であるかどうかを調べています。詳細は、「カーソル位置の行番号を取得する方法 」をご覧ください。
マクロ
Sub 行の追加() If Selection.Information(wdWithInTable) = True Then Selection.InsertRowsBelow 5 Selection.Collapse direction:=wdCollapseStart End If End Sub Sub 行の削除() Dim i As Integer For i = 1 To 100 If Selection.Information(wdWithInTable) = True Then Selection.Rows.Delete Else Exit For End If Next i End Sub