VBAと日々のこぼれ話

  1. VBA

【VBA】チェックシートを雛型シートからコピー・その他加工。7日前以前のシートは別ブックへ移動したい

他の記事に比べて機能てんこ盛りですが、実際利用するにはこれくらいのサンプルでなければ、あまり役に立たないのではないかと。

基本構文の解説は他のWebページの方が情報豊富ですしね。
・・・書きますよ、書きますけど他の技術系ブログの分かりやすさに到達するにはまだ時間がかかりそうです。

ソースは修正予定はありませんが、解説については更新・記事分割が度々入ると思います。

毎日使うようなチェックシートは、1シート雛型を作成しておけば後はコピーして使えば楽ちん。
ですが、シート名はもとよりシートの位置や見出しの色などのカスタマイズ、更には履歴として残しておきたいシートの移動は地味に時間がかかるので、マクロにお任せしようというコードです。

条件など

1.チェックシートは、毎日1シート作成
2.雛型シートをコピーして今日の日付でリネーム
3.シート名はyyyymmdd
4.2のシートの位置は先頭
5.2のシート見出しの色は水色、その他のシートは灰色
6.日付以外のシートは変化・移動なし
7.7日以前のシートは別ブックの末尾に移動
8.雛型シートは触られないように非表示

サンプルコード

意図やら解説やら

モジュール先頭での変数宣言

同一モジュール内で共通して使用できる変数としました。
templateSheetは定数(Const)として宣言しても良かったのですが、DateNowと揃えた方が分かりやすいのと、パラメータ設定で登場する他の変数と合わせて値設定の場所を一箇所にまとめたかったのでこのような形をとっています。

パラメータ設定

任意変更可能なものを集めています。
templateSheet以外の変数は、同プロシージャ内(Sample_MakeChkSheet)でしか使用しないのでモジュール先頭での変数宣言も定数としての宣言もしていません。変数の利用範囲の考慮です。

また後で説明しますが、バックアップ用のファイル名とファイルフルパスは今回は好みの問題で2つに分けている訳ではなく、ちゃんと意味があります(笑)ので1つにまとめないでください。

変数宣言の場所等は、ソースを書ききってから色々と考慮していけばよいと思います。
初めから的確な位置に置くのはなかなかハードルが高いです。

基準日設定

このように基準となる日付を一度取得しておけば、日付跨ぎを気にしなくても良くなるのでこのような作りにしました。Formatで文字列化したものは、後々のシート名の作成時に使用するためです。

本来、処理中に日付を跨ぐ真夜中に処理することの方が稀なので、都度、現在日付を取得するような作りでも構わないと思います。私というかシステムを齧っている人間は、想定される事象を細かく考慮する作りを当然としている(好む)人が多いです。

長くなったので、記事を分割します。

これ、しばらく解説が続くなー。

VBAの最近記事

  1. 【VBA】CSVを1行ずつ処理したい

  2. Excelシートの最終行を取得したい その1

  3. 【VBA】未だに苦手としていること

  4. 【VBA】モジュール先頭に記述する4種類のOption キーワード ステートメント

  5. 【VBA】同じ階層体系のフォルダを量産したい

関連記事

【スポンサーリンク】




PAGE TOP