问题与Excel VBA中的条件格式相关的macros

我试图从底部检查颜色。 如果find一个,我想更改相关工作表选项卡的颜色。

我有两个问题,我想摆脱一个问题。

  1. RGB(230, 184, 183)是我的首要任务。 我需要在表格中圈出来,然后检查其余部分。 笨拙的做这个atm ….

  2. 条件格式化颜色无法识别。 据我所见,我需要另一个尝试呢?

问题:我从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 

条件格式颜色可通过Range对象的DisplayFormat属性获得。 例如… Ws.Cells(iCntr,1).DisplayFormat.Interior.Color

我有条件格式的单元格没有被VBA识别的类似问题,从来没有find一个修复。 我的解决scheme最后不是使用条件格式,而是在validation例程中通过VBA对单元格着色。 这可能不是你想要的,我明白这一点。

对于从第1000行开始向上工作,有几种方法可以find工作表的最后一行1.使用usedrange.rows值

 For iCntr = ws.usedrange.rows.count To 1 Step -1 

然而,根据工作表的结构,Usedrange可能是不可预知的(例如,如果您的第一行和第一列是空白的,它将不包括那些在使用的范围地址),但根据您的情况,这可能是最简单的方法它。 2.查找您将始终填充的列中最后一个填充的行,并将其用作计数器

 lRow = ws.Cells(.Rows.Count, "A").End(xlUp).Row 

并保持其余的代码相同