Function IsWeekendDay(monthRange As Range)
Dim DayNum As Variant
Dim IsWeekend As Boolean
Dim s As String
Dim cell As Range
Set currentsheet = ActiveWorkbook.ActiveSheet
Dim CellsDown As Long
Dim CurVal As String
Dim index As Integer
Dim CurCol As Integer
index = 44
CurCol = 0
CellsDown = 21
CurVal = "W"
For Each cell In monthRange
DayNum = WorksheetFunction.Weekday(cell.Value, vbSunday)
If Not IsError(DayNum) Then
Select Case DayNum
Case 2 To 6 ' Monday thru Friday
IsWeekend = False
cell.Interior.ColorIndex = 2
Case Else
IsWeekend = True
cell.Interior.ColorIndex = 44
For CurrRow = 2 To CellsDown
If (Range(cell.Address).Offset(CurrRow - 1 ,CurCol).Interior.ColorIndex = 2) Then
Range(cell.Address).Offset(CurrRow - 1, CurCol).Clear
Range(cell.Address).Offset(CurrRow - 1, CurCol).BorderAround (xlContinuous)
Range(cell.Address).Offset(CurrRow - 1, CurCol).Value = CurVal
Range(cell.Address).Offset(CurrRow - 1, CurCol).Interior.ColorIndex = index
End If
Next CurrRow
End Select
Else
IsWeekend = False ' error
End If
Next cell
End Function
Я даю этой функции диапазон ячеек, содержащих даты месяца.
Я прохожу с параметром For Each
через диапазон и проверяю, является ли значение в ячейке выходным днем или нет, меняю ли я цвет и некоторые значения ячеек ниже.
Моя проблема в том, что моя программа берет только первую ячейку в диапазоне (например, 1 февраля 2018 года), она проверяет ее и после того, как выпрыгивает из For Each
и не переходит в следующую ячейку (2 февраля 2018 года). ).
Это происходит 3 раза, а затем происходит сбой.
В чем может быть проблема?