あるカレンダーがありまして、それを指定期間分、自動作成するVBA(Excel)を作りたいと思っています。

まずひとつは1~末日まで日数がありまして、それの特定の日(たとえば、日曜や○週目)のみにセルに色づけするというプログラムを作りたいと思っています。

もうひとつは普通にカレンダーを自動で作りたいんですが、アルゴリズムがよくわかっていません。両方とも手順について詳しく教えていただけると助かります。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

(1)特定の日を色付け


土曜日の例
A1:B1に2003と9をいれる。
Sub test03()
s = DateSerial(Cells(1, 1), Cells(1, 2), 1)
e = DateSerial(Cells(1, 1), Cells(1, 2) + 1, 1) - 1
j = 2
For i = s To e
If Weekday(i) = 7 Then
Cells(j, 1).Interior.ColorIndex = 6
End If
Cells(j, 1) = j - 1
j = j + 1
Next i
End Sub
(3)普通にカレンダーを自動で作りたいんですが
Sub test04()
s = DateSerial(Cells(1, 1), Cells(1, 2), 1)
e = DateSerial(Cells(1, 1), Cells(1, 2) + 1, 1) - 1
i = 2
For k = s To e
w = Weekday(k)
Cells(i, w) = k - s + 1
If w = 7 Then
i = i + 1
End If
Next k
End Sub
説明をすっきりさせるため、12月の次ぎが年を+1、1月にすべきを考慮してませんが、組みこんでください。
If Cells(1, 2) = 12 Then
e = DateSerial(Cells(1, 1) + 1, 1, 1) - 1
Else
e = DateSerial(Cells(1, 1), Cells(1, 2) + 1, 1) - 1
End Ifのように。
(2)○週目)のみにセルに色づけするという
WEEKNUM関数がワークシート関数で使えないので
工夫した。
Sub test05()
s = DateSerial(Cells(1, 1), Cells(1, 2), 1)
If Cells(1, 2) = 12 Then
e = DateSerial(Cells(1, 1) + 1, 1, 1) - 1
Else
e = DateSerial(Cells(1, 1), Cells(1, 2) + 1, 1) - 1
End If
i = 2
wn = 1
For k = s To e
w = Weekday(k)
Cells(i, 1) = k - s + 1
i = i + 1
If w = 7 Then
wn = wn + 1
End If
If wn = 3 Then
Cells(i, 1).Interior.ColorIndex = 6
End If
Next k
End Sub
    • good
    • 0
この回答へのお礼

大変な作業をありがとうございました。ばっちりできそうなんですが、検証してわからない点があれば、もう一度お聞きしたいと思うのでしばらくお待ちいただけますか。

お礼日時:2003/09/13 00:14

こことか参考になるかと。



参考URL:http://www.h3.dion.ne.jp/~sakatsu/
    • good
    • 0

1について


1~末日までのセルをループをかましてその都度判定すれば良いかなと。
具体的にはこんな感じ。
---
For Each C In Range("A1:A30")
If Weekday(C) = 1 Then
Range(C.Address).Interior.ColorIndex = 45
End If
Next C
---
A1からA30に日付があって、それを一つずつWeekday関数
でチェック。1の値が返ってきた(つまりは日曜日)セルのみオレンジ色にしています。
○週ということであれば、Weekday関数で返って来る値をカウントすれば何週かが判定できるでしょう。

2について
わざわざ一から作らなくても、既存の機能なりアドインを使えばいいんじゃないかなと思いますが。勉強がてらにやりたいということであれば別ですが。
アクセスやVBが既に入っていればカレンダーコントロールが付いてきてますし、それが無くてもフリーのアドインは幾らでもあります。

参考URL:http://www.google.com/search?num=50&lr=lang_ja&q=カレンダーコントロール エクセル アドイン
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング