まずは、とりあえずダウンロード
上でダウンロードしたエクセルファイルを開いてみましょう
どこかのセルに1~12の数値を入力します。例えば、C列の16行目のセルに 9を入力します。
メッセージボックスが開いて日付を縦に並べるか、横に並べるか聞いてくるのでここでは vを入力します(バーチカルのv)。次の瞬間縦方向に1~30までの日付と曜日を書き込みます。
9を書き込んだセルの一行上にその年の数値が書き込みます。
(つまり、表の1行目に数値を入力してもその上にはセルが無いので年を書き込めませんから日付を書き込む動作はできないのです)
最初に出るメッセージで h(ホリゾンタルのh)を入力すると日付は横方向に連続します。
このプログラムでの肝はActivecellとOffsetです。
Activecellは入力したときのセルを表しています。上の例ではセルC16がActivecellです。
Activecell.offset(-1)はActivecellの一行上を意味しますからC15のセルを指します。
書式は Activecell.offset(行位置 ,列位置)です(列位置が0の時は省略できます)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Private Sub kurikaesi(vh As String, nenn As Integer, tuki As Integer) '書き込むセルにデータがある時は消して置く If ActiveCell.Offset(2) <> "" Then ActiveCell.Offset(2).CurrentRegion.ClearContents End If '大の月、小の月、うるう年の2月を判断して日数を決定 Dim max max = nissuu(nenn, tuki) '1から月の日数だけ繰り返す For r = 1 To max ActiveCell.Offset(1 + r) = r '日付を書き込む ActiveCell.Offset(1 + r).HorizontalAlignment = xlCenter 'セル値の非表示位置を中央にセット '日付の合成 Dim hiduke As String hiduke = nenn & "/" & tuki & "/" & r '曜日の設定 Dim youbi As String youbi = Format(hiduke, "aaa") ActiveCell.Offset(1 + r, 1) = "(" & youbi & ")" '曜日を書き込む '土日は色をつける設定 If youbi = "土" Then ActiveCell.Offset(1 + r, 1).Font.Color = -4165632 '青 ElseIf youbi = "日" Then ActiveCell.Offset(1 + r, 1).Font.Color = -16776961 '赤 Else '土日以外は黒に戻す ActiveCell.Offset(1 + r, 1).Font.ColorIndex = xlAutomatic '黒(自動) End If 'セルの値の表示形式を中央にセット ActiveCell.Offset(1 + r, 1).HorizontalAlignment = xlCenter Next r End Sub '引数の月の日数を返す Private Function nissuu(nenn As Integer, tuki As Integer) Dim tukisuu tukisuu = 0 Select Case tuki Case 1, 3, 5, 7, 8, 10, 12 tukisuu = 31 Case 4, 6, 9, 11 tukisuu = 30 Case 2 '4年に一度のうるう年なら29日 If nenn Mod 4 = 0 Then tukisuu = 29 Else tukisuu = 28 End If End Select nissuu = tukisuu End Function |
コメント