VBA新手在这里,我已经寻找了2天,以找到一个脚本,我可以修改我的需要,但一直卡住或不能使任何工作,为我的特定情况。
我正在尝试编写一个简单但具体的宏来查找范围中的重复项并对其进行着色。
我的搜索条件在范围内(B5:B405),要扫描和着色的数据位于范围内(D5:OM1004)
数据只是数字,需要与搜索条件完全匹配,如果发现数据中的单元格存在于搜索条件中,则数据单元格填充为红色。
我还需要在数据行1004处停止脚本,并在末尾显示一条总执行时间的消息。
我可以用条件格式在几秒钟内完成这一点,但我需要计算之后的彩色单元格,并且我找不到任何VBA宏可以让我计算条件格式的颜色,即使是在cpearson的所有站点都没有成功。
发布于 2013-12-08 03:10:59
试试这个:
Option Explicit
Sub ColorCriteria()
Dim rCriteria As Range
Dim rData As Range
Dim c As Range, r As Range
Dim sFirstAddress As String
Dim ColorCounter As Long
Dim StartTime As Single, EndTime As Single
StartTime = Timer
Set rCriteria = Range("B5:B405")
Set rData = Range("D5:OM1004")
Application.ScreenUpdating = False
With rData
.Interior.ColorIndex = xlNone
For Each r In rCriteria
If Not r = "" Then
Set c = .Find(what:=r.Value, LookIn:=xlValues, lookat:=xlWhole, _
searchdirection:=xlNext)
If Not c Is Nothing Then
sFirstAddress = c.Address
c.Interior.Color = vbRed
Do
Set c = .FindNext(c)
c.Interior.Color = vbRed
ColorCounter = ColorCounter + 1
Loop Until c.Address = sFirstAddress
End If
End If
Next r
End With
Application.ScreenUpdating = True
EndTime = Timer
MsgBox ("Execution Time: " & Format(EndTime - StartTime, "0.000"" sec""") _
& vbLf & "Colored Cell Count: " & ColorCounter)
End Sub
发布于 2013-12-08 09:31:42
事实上,这个解决方案是完美的。但为了澄清,最初的条件格式化单元格计数方法也可以从Excel 2010开始使用。在那里可以识别颜色,然后用下面这样的方法对细胞进行计数
Set aktSheet = Application.ActiveWorkbook.Worksheets("Sheet1")
counter = 0
For Each c In aktSheet.Range("D5:OM1004").Cells
If c.DisplayFormat.Interior.ColorIndex = 38 Then
counter = counter + 1
End If
Next
https://stackoverflow.com/questions/20449028
复制相似问题