|
楼主 |
发表于 2024-3-31 10:23
|
显示全部楼层
Sub 标记() '2024.3.30
Dim arr1
Dim s As Range
arr1 = Sheets("指定节次不能同时有课").UsedRange 'x,y
arr2 = Sheets("汇总").Range("a4:Go25") 'i,j
Sheets("汇总").Range("a4:Go25").Interior.Pattern = xlNone
MsgBox "原标记已清除,即将重新标记"
B = 2 '这个2是指星期一第一节课所在的列号
F = 8 '这个8是指星期一最后一节课后在的列号,如果节数有变动就修改这个列号。
For C = 0 To 27 ' 14天,如需30天的,用30*2-1
For x = 2 To UBound(arr1) ' 循环指定有课 姓名
老师 = arr1(x, 1)
Set s = Nothing
For y = 2 To UBound(arr1, 2) '节次
If arr1(x, y) <> "" Then
节次 = arr1(1, y)
'For Z = 2 To UBound(arr2, 2) '找节次相同
For Z = B To F '找节次相同
If arr2(1, Z) = 节次 Then '取汇总表节次相同的列号
For V = 2 To UBound(arr2) '标记汇总表老师相同的单元格
If InStr(arr2(V, Z), 老师) Then
If s Is Nothing Then
Set s = Cells(V + 3, Z)
Exit For
Else
Set s = Union(s, Cells(V + 3, Z))
Exit For
End If
End If
Next
End If
If Not s Is Nothing Then
If s.Count = arr1(x, 16) Then '这个16是指辅助列所在的列号,如果辅助列列号有改动,就修改这个值。
s.Interior.Color = RGB(255, 0, 255)
End If
End If
Next
End If
Next
Next
B = B + 7 '这个7是指一天几节课,如果每天的课节数有变化就修改这个值。
F = F + 7 '这个7是指一天几节课,如果每天的课节数有变化就修改这个值.
C = C + 1
Next
MsgBox "DONE"
End Sub
老师好,我这样理解代码是对吗,如果对的话,以后我用时直接修改参数就行了 |
|