|
我用的是EXCEL2010,我把VBA80集第24集中示例文件中“数组方法”的代码复制到我自己的excel中并执行代码,发现有些小问题。我要达到的效果就是D列数据大于15000时,该行数据填充红色。由于我把D列数据弄得很大,从第一个数据大于15000以后,后面所有数据都大于15000,结果每填充25行后,就有一行没有填充。有谁可以解释一下为什么?! v2 U" d$ v' e5 D- `& ~
Sub 清除颜色()
& n1 z' {8 D0 R4 h+ N- B2 Y5 uRange("a:d").Interior.ColorIndex = xlNone
7 m: ~( M; L) X' Y qEnd Sub$ t0 | ?4 v# C g) A- h& L
. V& d, {1 |* V n& TSub 数组方法0()
0 z6 N1 M \6 {$ O Dim arr, t3 U8 ]- [' p% a) ]) ?
Dim x As Integer
; e9 ] `" {9 j. @ Dim sr As String, sr1 As String
' Z# j4 _- k% ~/ o! {& I 清除颜色/ F7 e3 a; F3 C4 s
t = Timer
6 n$ M. _- m0 Z/ c arr = Range("d2:d" & Range("a65536").End(xlUp).Row)8 ?" F( I5 x5 g" G/ E6 Z
For x = 1 To UBound(arr)
( t; p; B9 n) E. O4 }4 k% C If x = UBound(arr) And sr <> "" Then Range(Left(sr, Len(sr) - 1)).Interior.ColorIndex = 3
2 [7 E5 n/ T7 V+ d; ?' l$ I/ A If arr(x, 1) > 15000 Then
9 R4 t' J) K5 Z sr1 = sr# m/ \# k/ g( R2 }( Q
sr = sr & "A" & x + 1 & ":D" & x + 1 & ",": a9 z1 C# L. U/ G$ a3 e' I
If Len(sr) > 255 Then
+ U7 d/ e9 O+ A( k) K! |1 g sr = sr1( D2 W0 s7 n9 q( W: c: X
Range(Left(sr, Len(sr) - 1)).Interior.ColorIndex = 3! m% a& S* r6 m2 r* E# k( d m
sr = ""$ ]! t* z' V/ r
End If* [6 P! F% ?- |" _& ?- P
End If
7 a3 @2 n) H9 Q/ p7 ?/ o Next x1 @& l) _0 x" N. I; c6 L0 S
MsgBox Timer - t! y; _% T6 N. l/ G
End Sub
1 }6 ]% A5 G3 t4 L. f1 w0 _
. }7 `+ A& D8 X9 H: o3 m% p |
|