HOME > 即効テクニック > Excel VBA > その他関連のテクニック > VBA最初の一歩(その1)マクロ記録とセル領域

VBA最初の一歩(その1)マクロ記録とセル領域|Excel VBA

その他関連のテクニック

VBA最初の一歩(その1)マクロ記録とセル領域

( - )

多くの方がエクセルに触れて、しばらく使っているうちに、エクセルのメニューの中に”マクロ”という言葉を見つけ、マクロの記録を行い、感嘆とともに一種の失望を味わいます。
それは、マクロ記録によるコードをとりあえず実行してみたときに、直前に行った動作をそのまま繰り返してくれるところに驚き、感動し、そのままでは使えないことからくる落胆の気持ちでしょう。

例えばソートをするにも、集計をするにも、印刷範囲を設定するにも、ほとんどの場合が対象となるセル領域は変わるからです。
上記に少しでも身に覚えのある方はVBAの入り口をくぐる前に、あるいはVBAの門をたたいてみることさえあきらめてしまう前に、ひとつだけ試してみてください。

■”新規シートに貼り付け”機能の自動化

(準備):一行目を項目行とする、複数行、複数列にデータが入力されているワークシート。
※空白列、空白行を含まないこと。

【Excel 2007以降の操作】

  1. ステータスバーの[マクロの記録]ボタンをクリック
  2. 表示された[マクロの記録]ダイアログで、”マクロ名”を”TEST”、”マクロの保存先”に”作業中のブック”を選んで[OK]
  3. 【重要】データ領域のなかのどこか(例えばセルA1)を選択し、[ホーム]タブ→[編集]→[検索と選択]→[ジャンプ]を選択(あるいは[Ctrl]+[G]キー)。
    表示されたダイアログから[セル選択]ボタンをクリックし、[選択オプション]ダイアログから”アクティブセル領域”を選んで[OK]
    (あるいはセルA1を選択して[Ctrl]+[*]キー。データ入力範囲がすべて選択されます)
  4. [Ctrl]+[C]キーですべてのデータをコピー
  5. ステータスバーの[ワークシートの挿入]ボタンをクリックして、新規シートを追加
  6. セルA1が選択されているので、そのまま[Ctrl]+[V]キーで貼り付け
  7. ステータスバーの[記録終了]ボタンをクリック
  8. [Alt]+[F11]キーでVisual Basic Editorを起動

【Excel 2003以前の操作】

  1. [ツール]メニュー→[マクロ]→[新しいマクロの記録]を選択
  2. 表示された[マクロの記録]ダイアログで、”マクロ名”を”TEST”、”マクロの保存先”に”作業中のブック”を選んで[OK]
  3. 【重要】データ領域のなかのどこか(例えばセルA1)を選択し、[編集]メニュー→[ジャンプ]を選択(あるいは[Ctrl]+[G]キー)。
    表示されたダイアログから[セル選択]ボタンをクリックし、[選択オプション]ダイアログから”アクティブセル領域”を選んで[OK]。
    (あるいはセルA1を選択して[Ctrl]+[*]キー。データ入力範囲がすべて選択されます)
  4. [Ctrl]+[C]キーですべてのデータをコピー
  5. ステータスバーの[ワークシートの挿入]ボタンをクリックして、新規シートを追加
  6. セルA1が選択されているので、そのまま[Ctrl]+[V]キーで貼り付け
  7. [ツール]メニュー→[マクロ]→[記録終了]を選択。つづいて、[Visual Basic Editor]を選択

すると以下のようなマクロが記録されているのが確認できるはずです。
(注:バージョンによって若干の差が出る場合があります。実行確認はExcel 2010)

Sub TEST()
'
' TEST Macro
'

'
    Range("A1").Select
    Selection.CurrentRegion.Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
End Sub

最初のワークシート(コピー元)に戻り、今度は上記の記録テストで使用したのと同じデータ(項目行を除く)を手動でコピーして、最終行の次に付け足し(貼り付け)てみてください。セルA1から連続する複数行であれば問題ありません。 そして、先ほど記録したマクロを実行してみます。

【Excel 2007以降の操作】

  1. [表示]タブ→[マクロ]をクリック
  2. [マクロ]ダイアログのリストから”TEST”を選択し、[実行]

【Excel 2003以前の操作】

  1. [ツール]メニュー→[マクロ]→[マクロ]を選択
  2. [マクロ]ダイアログのリストから”TEST”を選択し、[実行]

新しいシートが挿入され、手動でコピーしたデータも含めてコピーされているはずです。

ここで重要なのはこの2行。

i    Range("A1").Select
A   Selection.CurrentRegion.Select

@はセルA1の選択(Select)
Aはアクティブセル領域(CurrentRegion)の選択

もし、手動でデータが入力されたセル領域を選択していたら、この2行のコードは

Range("A1:E50").Select

のように記録されているでしょう。

ここでは、セルA1を起点とする”アクティブセル領域”を使ってセル領域を選択したので、範囲を特定しないコードが記録されました。そのため、セルA1を起点としている限り、行数、列数が変わっても、記録マクロはそのまま使用することができるのです。