エクセル実践塾 > エクセル実践塾2013

前日シートのテーブルを、当日の新規シートでも使いたい

 

前日シートのコピーで、当日の新規シートを作り、そのデータ範囲だけを削除する方法があります

テーブル化されている表は、データ範囲をすべて削除しても、数式などの設定が保持されます。

この特長を利用して、テーブルを含むシートごとコピーし、そこからデータ範囲だけを削除したものを新規シートとします。

Excel 2013/2010/2007

 

Sheets(1).Copy Before:=Sheets(1)

@左のような1文で、先頭シートのコピーを、その左側に作成

先頭シートは、Sheets(1)で表せます。その直前にコピーしたシートを挿入します。

ActiveSheet.Name = Day(Date)

A続いて、左のような1文で、その名前を当日の日にちにする

シートのコピーが完了すると、コピーされたシートが編集状態になります。ActiveSheetでそのシートを表わすことができるので、Nameプロパティに名前を割り当てます。

当日の日付はDate関数で表わせ、Day関数を使えば、そこから日にちだけを取り出すことができます。

If Sheets(1).Name <> Format(Date, "d") Then

   Sheets(1).Copy Before:=Sheets(1)

   ActiveSheet.Name = Day(Date)

End If
 

BIf文でFormat関数による照らし合わせを行い、同日のシートがないときにだけ、シートコピーによる、新規シートの挿入を行うようにする

シートの名前は文字列なので、照らし合わせに用いる日にちも、Format関数で文字列にする必要があります。

Cells(1, 1).ListObject.DataBodyRange.Rows.Delete

C左のような1文を加えると、シートごとコピーしたテーブルのデータ範囲だけを削除できる

Private Sub Workbook_Open()

   If Sheets(1).Name <> Format(Date, "d") Then

      Sheets(1).Copy Before:=Sheets(1)

      ActiveSheet.Name = Day(Date)

   End If

   Cells(1, 1).ListObject.DataBodyRange.Rows.Delete

End Sub

DこれをThisworkbookのOpenプロシージャに記述すると、1日に1度だけ、ブックを開いたときに、テーブルを含む新規シートが挿入されるようになる

Eデータ範囲を削除しても、テーブルにはデータ行が1つだけ残される

そこにデータを入力すれば、保持されている数式などが適用されます。

 

関連する他のページ

マクロ有効ファイルって何?
マクロを含むブックは、マクロ有効ファイル(マクロ有効ブック)として保存しなければ、マクロが失われてしまいます

マクロのコードを、見た目にわかりやすく、簡潔に記述したい
With ステートメントを使えば、作業の対象となるオブジェクトの記述が1回で済みます

どのブックからでも利用できるマクロを作りたい
「個人用マクロブック」に登録すれば、どのブックからでもそのマクロを実行できるようになります

100行程度の表で、5行おきに、新しい行を挿入したい
あまり大きくない表でのパターン化された処理なら、一定の手順をマクロ記録すると便利です

B2セルに入力してあるデータを、そのシートの名前にしたい
シートの名前は、Worksheet.Name プロパティで変えることができます

編集中のブックを、現在のフォルダとは別のフォルダにも、すばやく保存したい
手間のかかる操作は、マクロ化すれば、簡単に処理できるようになります

ブックにたくさんのシートがあり、それぞれのB2セルに入力してあるデータを、それぞれのシートの名前にしたい
For Each...Next ステートメントを使えば、編集中のブックに含まれるすべてのシートを対象にして、同じ処理を実行することができます

ブックを閉じるときに、マクロを自動的に実行したい
そのブックのWorkbook.BeforeClose イベントに、マクロを実行するコードを記述します

マクロを右クリックで実行したい
Worksheet_BeforeRightClickイベントのプロシージャにマクロを記述すると、指定シートを右クリックしたときにそのマクロが実行されます

表の見栄えを良くしたい
「テーブルとして書式設定」を使って、表をテーブルに変えるのが簡単です

計算結果の○時○分を、○.○時間に直したい
24を乗算すると、時刻表示が時間表示になります

時間数を数値で求めたい
1時間を表わす"1:00"で、時間数を割ります