多くの方がエクセルに触れて、しばらく使っているうちに、エクセルのメニューの中
に”マクロ”という言葉を見つけ、マクロの記録を行い、感嘆とともに一種の失望を
味わいます。それは、マクロ記録によるコードをとりあえず実行してみたときに、直
前に行った動作をそのまま繰り返してくれるところに驚き、感動し、そのままでは使
えないことからくる落胆の気持ちでしょう。例えばソートをするにも、集計をするに
も、印刷範囲を設定するにも、ほとんどの場合が対象となるセル領域は変わるからで
す。
上記に少しでも身に覚えのある方はVBAの入り口をくぐる前に、あるいはVBAの門をた
たいてみることさえあきらめてしまう前に、ひとつだけ試してみてください。
■”並べ替え”機能の自動化■
(準備):一行目を項目行とする、複数行、複数列にデータが入力されている
ワークシート。
※空白列、空白行を含まないこと。
1.メニューの”ツール”−”マクロ”−”新しいマクロの記録”を選択。
2.表示された”マクロの記録”ダイアログで”、”マクロ名”を”TEST”、
”マクロの保存先”に”作業中のブック”を選んで”OK”。
3.【重要】データ領域のなかのどこか(例えばセルA1)を選択し、メニュー
から”編集”−”ジャンプ”を選択(あるいはコントロールキー+"G")。
表示されたダイアログから”セル選択”ボタンをクリックし、”選択オプ
ション”から”アクティブセル領域”を選んで”OK”。
(データ入力範囲がすべて選択されます)
4.メニューから”データ”−”並べ替え”を選び、任意の項目で並べ替えます。
ここでは2列目に相当する項目(セルB1が項目名)で並べ替えたとします。
5.メニューの”ツール”−”マクロ”−”記録終了”を選択。つづいて、
”Visual Basic Editor”を選択。
すると以下のようなマクロが記録されているのが確認できるはずです。
(注:バージョンによって若干の差が出る場合があります。実行確認はEXCEL2000)
Sub Macro1()
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub
つづいて、今度は上記の記録テストで使用したのと同じデータ(項目行を除く)を手動で
コピーして、最終行の次にに付け足し(貼り付け)てみてください。セルA1から連続する
複数行であれば問題ありません。
そして、先ほど記録したマクロを実行してみます。
メニューの”ツール”−”マクロ”−”マクロ”を選択。”マクロ”ダイアログボックス
のリストから”TEST”を選択し、”実行”ボタンを押してください。
同じデータをコピーして使用しているため、少なくとも同一データが2行連続した形でソート
されているはずです。
ここで重要なのは2行。
i Range("A1").Select
A Selection.CurrentRegion.Select
@はセルA1の選択(Select)
AはCurrentRegionの選択
つまり、セルA1を起点とするセル領域を選択するということですから、”アクティブセル
領域選択”機能を使わずに手動でセル領域を選択した場合と異なり、範囲を特定していない
ため、セルA1を起点としている限り、行数、列数が変わっても、記録マクロはそのまま使用
することができるのです。
※アクティブセル領域選択ボタンというものもあります。
エクセルのメニューから”ツール”−”ユーザ設定”と選択して”ユーザ設定”
ダイアログから、”コマンド”タブをクリック、”分類”リストから”編集”
を選び、右側の”コマンド”リストから”アクティブセル領域の選択”をマウ
ス左ボタンを押したままドラッグしてツールバーのどこかに配置してください。
|