【第7回】ExcelVBA:自動記録マクロの使い方
ExcelVBAにはマクロの自動記録という便利な機能があります。今回は、この自動記録マクロを中心に解説してみたいと思います。
自動記録マクロの使い方は、大きく分けて2通りあります。
1.Excel上で超単純な作業を1000回くらい繰り返さなければいけないとき。
2.ある処理をコードで書きたいが、書き方がさっぱり分からないとき。
まず1の方は、特定セルのコピー&ペースト作業や行・列の並べ替え、重複削除、シートのコピー、ブックの保存などすでに処理のやり方が決まっている繰り返し作業の場合です。こちらは、開発タブや自動記録アイコンから自動記録を起動し、繰り返したい動作を行って記録させ、記録終了後にそれを実行することで目標を実現することが可能です。
一方、2のほうは、自動記録を終了した後、コードを参照することになります。参考までに代表的な自動記録コードを以下に記してみます。
★シート名”Sheet1”を選択
Sheets(“Sheet1″).Select★シートを追加
Sheets.Add After:=Sheets(Sheets.Count)★シートの名前を “Sheet1″から”ExcelVBA”に変更
Sheets(“Sheet1″).Name = “ExcelVBA”★シート名”ExcelVBA”を削除
Sheets(“ExcelVBA”).Select
ActiveWindow.SelectedSheets.Delete★21行ぶんウィンドウをスクーロール
ActiveWindow.SmallScroll Down:=21★セルA1を選択
Range(“A1″).Select★A1セルをB1セルにコピー&ペースト
Range(“A1″).Select
Selection.Copy
Range(“B1″).Select
ActiveSheet.Paste★範囲”D1:F8″を範囲”G9:I17″にコピー&ペースト
Range(“D1:F8″).Select
Selection.Copy
Range(“G9″).Select
ActiveSheet.Paste★列Cを昇順で並び替え
Columns(“C:C”).Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets(“Sheet2″).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet2″).Sort.SortFields.Add Key:=Range(“C1″), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“C1:C79″)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With★列Cから重複を削除
Columns(“C:C”).Select
ActiveSheet.Range(“$C$1:$C$79″).RemoveDuplicates Columns:=1, Header:=xlNo★作業中のファイルを「名前を付けて保存」
ChDir “C:\Users\amano\Desktop”
ActiveWorkbook.SaveAs Filename:= _
“C:\Users\amano\Desktop\マクロファイル名.xlsm”, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
どうやって書けばいいのかわからないコードも、このように処理を逐一書き出してくれるため、コードを書く上でとても参考になります。マクロに触り続けていても、いまだにこの自動記録マクロにお世話になることが多々ありますね。この自動記録マクロとうまく付き合っていくのがVBAのスキルを上達させるコツと言えるかも知れません。
ちなみに。
処理中に参照するセルや範囲などが動的に変えたい場合は、この自動記録マクロ書き換える必要があります。VBA初心者が、まず一番最初に直面する壁ですね。長くなってきたので、その話は次回にしたいと思います。




