第5回の資料をやってみる。
今回も、資料は先にいただいているので、
少し、みておこうかなと、というか、
さいごまで打ち込んで、試しておかないと、
訳がわからなくなりそうで、、、
第5回は、4月28日(日)、
後々、伝説になりそうな10連休の二日目なので、
あと、三日あります。
カレンダーのレイアウトを作る
なるほど、曜日、月名、罫線 などを挿入していく部分です。
1 曜日
資料のうしろに、日付フォーマットのきまり、
という表があって、必要部分だけ抜き書きすると、こんな感じ。
2019年4月26日だったら、/を使って、2019/4/26
日~土 aaa
2019 などの西暦年 yyyy
月 m
日付 d
Format(A,B)
A の値をB のフォーマット(書式)で表示する
と書いてあります。
Format(”2019/4/26″,”aaa”)だと、
2019年4月26日 を、
aaa つまり、日~土 で表示するということになります。
曜日は、1,2,3・・・31までの日にちの下に入れるので、
セルB28~ j + 1 に、順に入れていけばいいので、
変数を使えばいいのはわかりますが、
CDate 関数?
変数year(何年)、変数 i(何月)、変数 j(何日)の3つが、
バラバラなので、yyyy/m/d 形式にまとめるために、
CDate 関数 を使うそうで、
CDate(Str(year) & “/” & Str(i) & “/” & Str(j)) でまとめてあげる。
変数 dim hiduke はいいとして、
あとは、まったく???状態なので、
後ろの回答例で確認してみました。
hiduke = CDate(Str(year) & “/” & Str(i) & “/” & Str(j))
と、
Cells(28, j + 1).Value = Format(hiduke, “aaa”)
Format(”2019/4/26″, “aaa”)が、
Format(yyyy/m/d, “aaa”)なので、
hiduke = CDate(Str(year) & “/” & Str(i) & “/” & Str(j))
を使って、hiduke = yyyy/m/d にしているので、
Format(hiduke, “aaa”)になる訳?
結局、よくわからないので、
回答例を見ながら、打ち込んでみました。
(画像をクリックすると拡大表示します)
日付、曜日をセルの中央に
27行目、28行目を中央揃えに
シートのセル全体に設定してしまって問題ないので、
Cells.HorizontalAlignment = xlCenter
で、セル全体に対し、水平方向の位置を設定する命令を使うそうです。
2 月名
(ア)セルA27、セルA28 を結合
(イ)フォントサイズ 24
(ウ)A列の幅、10
これは、かんたんに出来そう、と思ったのですが、
セルA27と、A28 を結合するには
を使うと、紹介されていました。つまり、
Range(“A27:A28”).Merge
月名をフォント24で表示するには
月名を表記するのに、
Range(“A27”).Name = Str(i) & (“月”)
と入力してエラー。
回答例を見たら、↓ になっていました。
Range(“A27”).Value = Str(i) & (“月”)
A 列の幅を10に設定
第4回でもやっていたので、
わかっているつもりでしたが、さいしょ、
Columns(“A27”).ColumnWidth = 10
と、つまり、セルA27 を指定してしまってエラー。
解答例↓ を見て、列幅だから、A だけでよかったんだと。
Columns(“A”).ColumnWidth = 10
何か、変になったら、
VBE を1回閉じて、もう一度開いて実行、
それでもダメなら、
Sheet1 以外を削除して実行した方がいいみたいです。
3 罫線を引く
月名セル
日付
曜日 に、それぞれ罫線を引く。
これは楽勝でしょう。
指定セル..Borders.LineStyle = xlContinuous
でいけるはず。
で、第4回で作ったプロシージャに、追加した分。
Sub sample()
Dim i
Dim j
Dim saishuubi
Dim year
Dim hiduke
|
あいだ、省略
|
For j = 1 To saishuubi
hiduke = CDate(Str(year) & “/” & Str(i) & “/” & Str(j))
Cells(27, j + 1) = j
Cells(28, j + 1).Value = Format(hiduke, “aaa”)
Cells.HorizontalAlignment = xlCenter
Range(“A27:A28”).Merge
Range(“A27”).Font.Size = 24
Range(“A27”).Value = Str(i) & (“月”)
Columns(“A”).ColumnWidth = 10
Range(“A27:A28”).Borders.LineStyle = xlContinuous
Cells(27, j + 1).Borders.LineStyle = xlContinuous
Cells(28, j + 1).Borders.LineStyle = xlContinuous
Next
Next
Application.DisplayAlerts = True
End Sub
(画像をクリックすると拡大表示します)