Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1847|回复: 3

[已解决]【求教】互相无关的宏导致错误(20BB)

[复制链接]
发表于 2009-9-22 23:01 | 显示全部楼层 |阅读模式

 

这是一个给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)

【求教】互相无关的宏导致错误(20BB)

【求教】互相无关的宏导致错误(20BB)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2009-9-22 23:07 | 显示全部楼层    本楼为最佳答案   

把Q全换成其他字符,比如N,因为在这里Q是自定义函数,不能用作变量

回复

使用道具 举报

发表于 2009-9-22 23:09 | 显示全部楼层

QUOTE:
以下是引用雨狐在2009-9-22 23:07:00的发言:

把Q全换成其他字符,比如N,因为在这里Q是自定义函数,不能用作变量

提示错误的"Q"
回复

使用道具 举报

 楼主| 发表于 2009-9-22 23:11 | 显示全部楼层

 高,刚才发现了原来是这里,感谢感谢

For Q = P + 1 To I
                            If ARR2(2, P) = ARR2(2, Q) Then T = False
                        Next Q

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 21:55 , Processed in 0.255761 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表