月次更新に必要な処理を考えましょう
では早速月次更新に必要な処理を考えて行きましょう。
- ベースとなるシートをコピー
- 作成年月(年月はシート名にも使用)を入力
- 入力されている情報のクリア
こんな所でしょうか。必要になりそうなものは適宜追加していくとして組んでいきましょう。
入力箇所のクリア処理
まずは入力箇所のクリア処理から作っていきましょう。
何故、最初にこれから作るのかというと後々の処理でも使うであろうという事でこの処理から書き始めようかと考えました。
今回考えているのが入力エリアは「必ず黄色」という事で黄色いセルを探しに行きます。
その黄色いセルのセル番地を文字列として生成。その後Rangeの指定に使用して一気に選択してクリア処理を行っていきます。
という事で新たにお勉強しなければいけないプロパティがありますので、それはやりつつお勉強していきましょう。
(※時給は毎月必ず変える必要がないかという観点から時給欄の色は変更しました。)
Sub InputSpace_clear() Dim address As String Dim end_row As Long '表の最終行 Dim end_col As Long '表の最終列 Dim i_color As Long '入力箇所の色 Dim v As Range 'for eachで使用 Dim i As Integer 'カウンタ変数 '今回はend_col、end_rowともに決め打ちします。 end_row = 35 end_col = 18 i_color = 65535 For Each v In Range(Cells(1, 1), Cells(end_row, end_row)) If v.Interior.Color = i_color Then If Not address Like "" Then address = address & v.address & "," Else address = v.address & "," End If End If Next address = Left(address, Len(address) - 1) Range(address).ClearContents End Sub
入力エリアのクリア処理はこんな感じでしょうか。
まずは今回新しく出てきたのはInterior.Colorですね。Interior.Colorというのはセルの色の事ですね。RangeやCellsなどセル範囲に使用するプロパティです。
色にはそれぞれ色番号があって今回使用している65535は黄色の事です。
そしてFor Eachを抜けた後に行っているLeft(address, Len(address) – 1)は、処理を進めると最後についてしまうカンマを消す処理になります。
日毎の入力箇所クリア
これは月が変わっても場所が変わる事はありませんね。という事でこれは完全に決め打ちで消してしまって問題ないかと思います。
Sub days_clear() With Range(Cells(3, 6), Cells(33, 9)) .ClearContents .ClearComments End With End Sub
こうですね。一応、入力者が何かしらのコメントを残す可能性を考えて「入力されている値」と「コメント」をクリアしています。
という事でこれらのプロシージャはそれぞれ単体でも使えるようにした状態で次回は月次更新のマクロを書いていきましょう。