VBAで~ 第5回 の資料

第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(セル範囲).Merge 
を使うと、紹介されていました。つまり、
   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

(画像をクリックすると拡大表示します)

 

 

サイトマップ