| 会社でスケジュールを組んでいるが、すぐに割り込みは入ってスケジュールが崩れ、スケジュールの建て直しに時間をかけている。 すでに立てたスケジュールを自動でずらして簡単にスケジュール表が作成できるようにする。 テンプレートは下記のように作成した。 スケジュール管理雛形V0.1.LZH 使っていくうちに修正しようと思う。 開始日時と終了日時を入れ、日付記入ボタンを押すと、M列から自動的にその間の日時が入るVBAプログラムを作成した。 Sub 日付() Dim KikanDate As Long, EndDate As Long, StartDate As Long EndDate = Cells(3, 8) StartDate = Cells(3, 5) KikanDate = EndDate - StartDate For i = 0 To KikanDate - 1 Cells(5, 13 + i) = StartDate + i Cells(5, 13 + i).NumberFormat = "d" If Day(Cells(5, 13 + i)) = 1 Then Cells(4, 13 + i) = Month(Cells(5, 13 + i)) Cells(4, 14 + i) = "月" End If Columns(13 + i).AutoFit Next End Sub Cells(2, 5)に開始日時、Cells(2, 8)に終了日時を入れるのだが、シリアル値にしたいため、DimではLong(長整数型宣言)とした。 Integer(整数型宣言したら、オーバーフローのエラーメッセージが出た。範囲が-32,768 〜 32,767のため)。こちらを参照。 表示形式は日時設定としてある(文字列ではない)。 KikanDateには、終了日時から開始日時を引いた値が入り、日数が入る。 For 〜 Nextで日数分、M列から日付を入れる。 Cells(4, 13 + i) = myData2 + iで開始日時から1日ずつプラスして、次の列に日付を入れている。 Cells(4, 13 + i).NumberFormat = "d"で、表示形式を「日」のみとしている。値はシリアル値。 Format関数では文字列になってしまうので、うまくいかない。 If Day(Cells(4, 13 + i)) = 1 Then Cells(3, 13 + i) = Month(Cells(4, 13 + i)) Cells(3, 14 + i) = "月" End If この部分は、1日の時だけ上の行に何月であるかを記載する。 Day(Cells(4, 13 + i))で何日かを出し、Month(Cells(4, 13 + i))で何月かを出す。 Columns(13 + i).AutoFitで列ごとに列幅を自動調整する。 次は曜日検索をして土日を省く作業だ。 |