戻る  □VBAのサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
Excel マクロで直近3ヶ月分のカレンダー

    [132962] Excel マクロで直近3ヶ月分のカレンダー-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ 北村 -(2022/02/13(13:42))
    □U R L/
      Excel ワークシート内に直近3ヶ月のカレンダーを同時にシート内に表示させるには
      マクロ内に何を追加すればいいですか
      
      
      
      Sub 今月のカレンダー()  
          Dim myDate As String
          Dim Nen As Integer, Tuki As Integer
          Dim i As Integer, j As Long, k As Integer
          Dim cn As Long
          Dim myTitleD, myTitle(1 To 1, 1 To 7)
          Dim myTable(1 To 12, 1 To 7)
          Dim c As Range
          
          '作成する月を入力
          myDate = Application.InputBox(Title:="年月の指定", _
                               prompt:="年月を2022/2の形式で入力してください", _
                               Default:="2022/2", Type:=2)
          'キャンセルボタンを押したとき、日付でないデータの時は終了する
              If myDate = "False" Or Not IsDate(myDate) Then
                  MsgBox "終了しました"
                  Exit Sub
              End If
          Nen = Year(myDate)
          Tuki = Month(myDate)
          
          '曜日を配列にセットします
          myTitleD = Array("日", "月", "火", "水", "木", "金", "土")
          For k = 0 To 6
              myTitle(1, k + 1) = myTitleD(k)
          Next k
          
          '指定月の日付を配列にセットします
          cn = 1
          For j = DateSerial(Nen, Tuki, 1) To DateSerial(Nen, Tuki + 1, 0) '末日は 次の月の0日 = 前日の末日
              If Day(j) <> 1 And Weekday(j) = 1 Then cn = cn + 2
              myTable(cn, Weekday(j)) = Format(j, "m/d")
          Next j
          
          'シートに書き出す
          Application.ScreenUpdating = False
          Range("H:O").Clear
          Range("H16").Value = DateSerial(Nen, Tuki, 1)
          Range("I17").Resize(1, 7).Value = myTitle
          Range("I18").Resize(12, 7).Value = myTable
          
          '書式を設定します
          Range("H16").NumberFormatLocal = "m""月"""
          Range("I17").Resize(12, 7).HorizontalAlignment = xlCenter
          Range("I18").Resize(11, 1).NumberFormatLocal = "m""月""d""日"""
          Range("I16").Resize(13, 7).Borders.LineStyle = True
          
          '日曜日は赤色、土曜日は青色にします
          Range("I17").Resize(13, 1).Font.Color = RGB(255, 0, 0)
          Range("O17").Resize(13, 1).Font.Color = RGB(0, 0, 255)
          
          '祝日(指定休日)のチェックし、赤色の太文字にします
          For Each c In Range("I18").Resize(12, 7)
              If Application.CountIf(Worksheets("休日リスト").Range("A2:A20"), c.Value) > 0 Then
                  c.Font.Color = RGB(255, 0, 0)
                  c.Font.Bold = True
          End If
          Next c
          Application.ScreenUpdating = True
          
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [132963] Re[1]: Excel マクロで直近3ヶ月分のカレンダー-

    記事引用/メール受信=OFF■

    □投稿者/ コナミ -(2022/02/13(19:44))
    □U R L/

      マクロはお隣の板なので、できれば
      お引っ越しされた方がいいかと思います。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G