[[20230609085236]] 『日曜日は赤(マクロ)』(うまうま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日曜日は赤(マクロ)』(うまうま)

下記マクロを作ったところ『型が一致しません』が表示されました。
原因を知りたいです。

Sub カレンダー_日曜赤()

    Dim i As Long
     Worksheets("カレンダー").Select
    For i = 3 To 33
    If Weekday(Cells(i, 1)) = 1 Then
     Cells(i, 1).Font.ColorIndex = 3
     Next i
End Sub

カレンダーシートの
A1セルに『6月』
A3セル =DATE(YEAR(A1),MONTH(A1),1)
A4セル以下 =IFERROR(IF(A3+1>EOMONTH($A$1,0),"",A3+1),"")
が入力されています。

マクロを実行すると日曜日は赤文字になりますが、

 If Weekday(Cells(i, 1)) = 1 Then が黄色になってしまいます。

よろしくお願いします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


こういうこと

Range("A1").Formula = "="""""
MsgBox Weekday(Range("A1"))
(てばよ) 2023/06/09(金) 09:18:44


 >=IFERROR(IF(A3+1>EOMONTH($A$1,0),"",A3+1),"")

 31日間フルにない月は、空白文字("")が出力されるセルがある。 
 空白文字を対象にWeekday()を求めようとすると型エラーになる。

 Sub カレンダー_日曜赤()
     Dim i As Long

     Worksheets("カレンダー").Select

     For i = 3 To 33
         If IsDate(Cells(i, 1).Value) Then ’日付データかどうか先ず確認する
             If Weekday(Cells(i, 1)) = 1 Then
                 Cells(i, 1).Font.ColorIndex = 3
             End If
         End If
     Next i
 End Sub

(半平太) 2023/06/09(金) 09:33:05


ありがとうございます。
すごくスッキリしました。

IsDateの部分では =trueは省略されているのでしょうか。
サクッとググってみただけですが、今のところ見つけられず。

(うまうま) 2023/06/09(金) 10:17:07


 >IsDateの部分では =trueは省略されているのでしょうか。

 そう解釈するのが正しいでしょうね。

 でも、IsDate()は、TrueかFalseしか返さないので、
 If True = True と言うことになり、なら左のTrueだけでいいじゃないと思えちゃうので、私は普通は書きません。

(半平太) 2023/06/09(金) 11:30:12


なるほど。
と言いますか、よ〜くは分かっていないかもしれませんが
VBA初心者なのでカッコよさげに見えます。

就業中にコッソリ通信教育のVBAをやり始めました。

またよろしくお願い致します。
(うまうま) 2023/06/09(金) 13:05:53


 End If が抜けていますよ。
 A3セル、A4セルの式おかしくないですか。
(IT) 2023/06/09(金) 14:37:11

ありがとうございます。
修正してうまくいきました。
(うまうま) 2023/06/15(木) 10:22:01

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.