For~Next:ループ
Sub 日付から曜日を記入()
Dim maxRow As Long
maxRow = ThisWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 2 To maxRow
Cells(i, 2).Value = WeekdayName(Weekday(Cells(i, 1).Value), True) 'False:日曜日
Next i
MsgBox "完了"
End Sub
Weekday関数:
- 「〇曜日」と表示:Cells(i, 3).Value = WeekdayName(Weekday(Cells(i, 2).Value), False)
- 「〇」と表示:Cells(i, 3).Value = WeekdayName(Weekday(Cells(i, 2).Value), True)
上記コードのスピードアップ改善コード
Sub 日付から曜日を記入2()
Dim maxRow As Long
Dim ws As Worksheet
Dim i As Long
Dim dayName As String
' ワークシートオブジェクトを明示的に指定する
Set ws = ThisWorkbook.ActiveSheet
' 最終行を取得
maxRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 日付から曜日名を取得し、セルに入力
For i = 2 To maxRow
dayName = WeekdayName(Weekday(ws.Cells(i, 1).Value), True) ' False: 日曜日
ws.Cells(i, 2).Value = dayName
Next i
' 完了メッセージを表示
MsgBox "完了"
End Sub
改善点:
- ワークシートオブジェクトを明示的に指定する
- WeekdayName関数を使用する際にローカル変数を宣言する
セルに曜日を代入
Sub 曜日の取得()
Dim n As Long
n = Weekday(Cells(2, 2))
Cells(2, 3) = Choose(n, "日", "月", "火", "水", "木", "金", "土")
MsgBox "完了"
End Sub
コメント