「だるころ」(だぁ~るまさんがこぉ~ろんだ♪)

「だるころ治療院」を開設しようと思って、はてなブログを作りました。 https://darucoro.com/

VBAを楽しむ日


スポンサーリンク

★読者登録お願いします

 

VBAを楽しむ日
Excel
 
今回もお越しいただきありがとうございます。
 
今回はホントに久しぶりなんですが、VBAの紹介です。
VBAが趣味といってもいいくらい好きなのですが、あまりブログでは紹介してません。
興味ない人には「?」って感じだと思います。

VBAでカレンダー

最終的には色を付けたりして、こんなカレンダーが作りたい時の考え方です。

表を観やすくするのは後でいろいろ調べたら出来るので、先ずはシンプルにプロシージャの記述をしてみたいと思います。

VBAExcelがあれば誰でも出来ちゃうってのがいいですねぇ~。

 

先ずはInputBoxを表示   

Sub Calendar()
 'シンプルにカレンダーを作成する
    Dim i, j, Youbi As Long
    Dim Sw As Boolean
    
     Dim hiduke As Date
        hiduke = InputBox("日付を入力して下さい(例:2025/4/1)", "Date")
            Range("B2").Value = hiduke
        

※変数は後で迷わない様に数字の変数は一般的な「i」「j」を

その他はYoubi「曜日」hiduke「日付」Sw「Switch」みたいにしてます。

Boolean型は真偽を判別する時に使う変数の型です。

True or Falseを判断します。

InputBoxに欲しい年数の日付の初日を記入するとその月にカレンダーが作成されます。

 

日曜日から始めたい

 Range("B5:H10") = ""
   
    With Range("B2")
        .Value = hiduke
        .NumberFormatLocal = "m月"
        hiduke = .Value
    End With
    
    For j = 1 To 7
        Cells(5, j + 1) = j
    Next j
    Range("B5:H5").NumberFormatLocal = "aaa"

 

※B2にInputBoxに記述した日付を入力して〇月と書き込みます。

その記述をもとに先ずは曜日を入力します。

5行目の2列目 Cells(5, j + 1)に日曜日から順番に曜日を指定します。

PCは1900/1/1が最初の日曜日なので、5行目の2列目にはその日付が入力されます。

それをユーザー定義"aaa"で曜日に変更させる感じですね。

 

最初が肝心

Youbi = Weekday(hiduke, vbSunday)
    
    For j = Youbi To 7
        Cells(6, j + 1) = hiduke
        hiduke = hiduke + 1
    Next j

 

※5行目に曜日を記入したら、次の6行目には数字を入れなくちゃなんです。

VBAでは1が日曜日、2が月曜日.....6が土曜日に割り当てられてます。

Weekday(日付,開始の曜日)みたいにWeekday関数を使います。

こうすると、その記述した月の何曜日スタートなのか判断して数字を記入してくれます。

 

 

f:id:darucoro9216kun:20200324094929p:plain
f:id:darucoro9216kun:20200324094929p:plain
●欲しい部分だけ●

For i = 7 To 11
        For j = 1 To 7
            If Month(Range("B2")) <> Month(hiduke) Then
                Sw = True
                Exit For
            End If
            Cells(i, j + 1) = hiduke
            hiduke = hiduke + 1
        Next j
        If Sw = True Then Exit For
    Next i
    
    Range("B6:H10").NumberFormatLocal = "d"
      
 End Sub
 
例えば2025/5/1ってInputBoxに記述したら5月だけ書き出したいですよね。
上の4月部分は先ほど処理したので、今回は下の6月部分ですね。
If構文を使って、同じ月(Month)なら記述して欲しいけど、同じ月(Month)じゃなかったら抜け出せ(Exit For)って記述します。
 
そして最後にそれを”d“(日にち)に変更して終了です。
 
VBA
●カレンダー●
 

Sub Calendar()
 'シンプルにカレンダーを作成する
    Dim i, j, Youbi As Long
    Dim Sw As Boolean
    
     Dim hiduke As Date
        hiduke = InputBox("日付を入力して下さい(例:2025/4/1)", "Date")
            Range("B2").Value = hiduke
            
    Range("B5:H10") = ""
   
    With Range("B2")
        .Value = hiduke
        .NumberFormatLocal = "m月"
        hiduke = .Value
    End With
    
    For j = 1 To 7
        Cells(5, j + 1) = j
    Next j
    Range("B5:H5").NumberFormatLocal = "aaa"

    Youbi = Weekday(hiduke, vbSunday)
    
    For j = Youbi To 7
        Cells(6, j + 1) = hiduke
        hiduke = hiduke + 1
    Next j
    
    For i = 7 To 11
        For j = 1 To 7
            If Month(Range("B2")) <> Month(hiduke) Then
                Sw = True
                Exit For
            End If
            Cells(i, j + 1) = hiduke
            hiduke = hiduke + 1
        Next j
        If Sw = True Then Exit For
    Next i
    
    Range("B6:H10").NumberFormatLocal = "d"
         
 End Sub

 

 

 
ノート
 

f:id:darucoro9216kun:20250416165521j:image

 
●気が付いたことを書き留めてます●
 
 
 
飾り付け
 
Range("B6:H10").Borders.LineStyle = xlDash
点線で囲む場合はこんな感じです。
Range("B2:F3,B5:H12").Font.Size = 17
文字のサイズを変更したい時にはこんな風に記述します。
飾り付けは好きなようにネットで調べて出来るから楽しいですねぇ~。
 
「大切な事」
VBAはシンプルに作り込む事が大切
装飾は後から何でも出来るからぁ~(笑)
レコードみたいなものを作れたら、見せ方は自由自在ですからねぇ〜。
 
※素人 VBA楽しんでます!
次回は「土曜日を青くして、日曜日を赤くする」なんてのを紹介してみます。
 

Thank you!

 
またお越しいただける日を
心よりお待ち申し上げております。
 
 
ワードプレス記事
「コロナ禍での健康アドバイス」も
よろしくお願いします。

 

「手の疲れを取るツボ」

 
☆D-BLOG☆
 
 
.
.
.
.
.
プライバシーポリシー