我有一个功能,它通过一个日历,并根据他们的列号设置星期日和星期六。然后我将范围设定为一周(周日至周六)。
我的问题是,当循环到达星期六时,set week
范围内的两个单元格似乎已交换位置,因此选择星期六到星期日。
我该如何解决这个问题?
For colNum = 4 To 100
Set currentCell = .Cells(rowNum, colNum)
Set otCell = currentCell.Offset(-1, 0)
Set regCell = currentCell.Offset(-2, 0)
If colNum Mod 7 = 4 Then
sun = colNum
End If
If colNum Mod 7 = 3 Then
sat = colNum
End If
Set week = .Range(.Cells(rowNum, sun), .Cells(rowNum, sat))
week.Select
Next colNum
答案 0 :(得分:0)
说实话,真的很难理解你的意思。但是,我们希望您正在构建某种花哨的日历,从5列开始,您需要将周分开。例如。像这样的东西(颜色更容易):
您的代码应该只执行某种操作(在您的案例选择中,在我的情况下着色范围),当它定义了一周中的最新日期(在我们的情况下是星期六)。在所有其他情况下,它应该继续循环。因此,试试这个:
Public Sub TestMe()
Dim colNum As Long
Dim week As Range
Dim sun As Long
Dim sat As Long
Dim bColor As Boolean
For colNum = 4 To 100
If colNum Mod 7 = 4 Then
sun = colNum
ElseIf colNum Mod 7 = 3 Then
sat = colNum
Set week = Range(Cells(1, sun), Cells(200, sat))
bColor = Not bColor
If bColor Then
week.Interior.Color = vbRed
Else
week.Interior.Color = vbGreen
End If
End If
Next colNum
End Sub
编辑:
为了使您的代码正常工作,请尝试以下方法:
If sat-sun <> 1 Then
Set week = .Range(.Cells(rowNum, sun), .Cells(rowNum, sat))
week.Select
End If