我正试图从下往上检查颜色。如果找到一个,我想更改相关表格标签的颜色。
我有两个问题和一个我想摆脱的问题。
RGB(230, 184, 183)
对我来说是一个优先事项。在检查其余部分之前,我需要圈选表单并检查它。笨拙地做这个atm ....
无法识别条件格式颜色。据我所见,我需要再做一次尝试?
问题:我强迫从1Row = 1000
开始。还有更好的方法吗?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim lRow As Long
Dim iCntr As Long
Dim ws As Worksheet
lRow = 1000
For Each ws In ThisWorkbook.Worksheets
For iCntr = lRow To 1 Step -1
If ws.Cells(iCntr, 1).Interior.Color = RGB(230, 184, 183) Then
ws.Tab.Color = RGB(230, 184, 183)
Exit For
ElseIf ws.Cells(iCntr, 1).Interior.Color = RGB(184, 204, 228) Then
ws.Tab.Color = RGB(184, 204, 228)
Exit For
Else: ws.Tab.Color = RGB(195, 215, 155)
End If
Next
Next ws
End Sub
答案 0 :(得分:1)
条件格式颜色可通过Range对象的DisplayFormat属性获得。例如...
Ws.Cells(iCntr,1).DisplayFormat.Interior.Color
答案 1 :(得分:0)
我遇到了类似问题,条件格式化的单元格无法被VBA识别,也从未找到修复程序。我的解决方案最终不是使用条件格式化,而是在验证例程期间通过VBA为单元格着色。这可能不是你想要的,我很欣赏。
关于你强行从第1000行开始向上工作,有几种方法可以找到工作表的最后一行 1.使用usedrange.rows值
For iCntr = ws.usedrange.rows.count To 1 Step -1
但是,根据工作表的结构,Usedrange可能无法预测(例如,如果您的第一行和第一列为空白,则不包括使用范围地址中的那些)但根据您的具体情况,这可能是最简单的这样做的方式。 2.找到您将一直填充的列中最后一个填充的行,并将其用作计数器
lRow = ws.Cells(.Rows.Count, "A").End(xlUp).Row
并保持其余代码相同