这是一个给O到W列添加颜色的宏(Sub 标注颜色)在模块二里,点按钮能用 Sub 标注颜色() Application.ScreenUpdating = False Dim ARR2 R = Range("B65536").End(xlUp).Row ARR1 = Range("O2:W" & R) For J = 1 To 9 If J <> 5 Then '重新定义每列数组 S = 0 For I = 1 To UBound(ARR1, 1) If ARR1(I, J) <> "" Then S = S + 1 If S = 1 Then ReDim ARR2(1 To 3, 1 To 1) ARR2(1, S) = I ARR2(2, S) = ARR1(I, J) Else ReDim Preserve ARR2(1 To 3, 1 To S) ARR2(1, S) = I ARR2(2, S) = ARR1(I, J) End If End If Next I '判断第一种情况 Y = 1 W = 1 For I = 2 To UBound(ARR2, 2) If ARR2(2, I - 1) = ARR2(2, I) Then Y = Y + 1 W = 1 Else Y = 1 W = W + 1 End If '写入第一种情况颜色 If Y = 2 Then ARR2(3, I) = 20 ARR2(3, I - 1) = 20 End If If Y = 3 Then ARR2(3, I) = 33 ARR2(3, I - 1) = 33 ARR2(3, I - 2) = 33 End If If Y >= 4 Then For L = 1 To Y ARR2(3, I - L + 1) = 38 Next L End If '判断第二种情况 If I >= 5 Then T = True For P = I - 4 To I - 1 For Q = P + 1 To I If ARR2(2, P) = ARR2(2, Q) Then T = False Next Q Next P If T = True Then For P = I - 1 To I ARR2(3, P) = 3 Next P End If End If Next I '标注颜色 For I = 1 To UBound(ARR2, 2) Cells(ARR2(1, I) + 1, 14 + J).Interior.ColorIndex = ARR2(3, I) Next I End If Next J Application.ScreenUpdating = True End Sub 但是如果我我把经常用到的2个宏就添加到模块一里,上面的宏就不起作用了,提示:编译错误参数不可选。 如图
AtgxyyF5.rar
(37.28 KB, 下载次数: 0)
|