2017-04-27 61 views
1

所以我的目标是更改任何包含单词“总计:”的字符串的颜色。然后使用逻辑来突出显示单元格B1和C1。我目前的代码可以改变颜色,但是当我使用逻辑它认为单元格没有填充。从条件格式确定单元格颜色的更改

Sub Macro6() 
' 
' Macro6 Macro 
' 


    'ActiveWindow.SmallScroll Down:=-12 
Range("A1:A381").Select 
Selection.FormatConditions.Add Type:=xlTextString, String:="Totals:", 
TextOperator:=xlContains 
' 


Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
' With Selection.FormatConditions(1).Font 
    '  .Color = -16383844 
    ' .TintAndShade = 0 
    ' End With 
With Selection.FormatConditions(1).Interior 
    .PatternColorIndex = xlAutomatic 
    .Color = 13551615 '16777215 ' 
    .TintAndShade = 0 
End With 
'Selection.FormatConditions(1).StopIfTrue = False 
'lastrow = Sheet4.Cells(Sheet4.Rows.Count, "A").End(xlUp).Row 



If Sheet1.Cells(9, 1).Interior.Color = 13551615 Then '16777215 
MsgBox ("yes") 
Else 
MsgBox ("wrong") 
MsgBox (Sheet4.Cells(6, 1).Interior.Color) 
End If 






End Sub 
+0

使用格式..... – KyloRen

回答

2

您需要使用单元格的.DisplayFormat属性来检索条件格式设置规则的格式设置方面。

Option Explicit 

Sub Macro1() 
    With Worksheets("Sheet1") 
     With .Range("A1:A381") 
      .FormatConditions.Delete 
      With .FormatConditions.Add(Type:=xlTextString, String:="Totals:", TextOperator:=xlContains) 
       .Interior.Color = 13551615 '16777215 
       .SetFirstPriority 
       .StopIfTrue = False 
      End With 
     End With 
    End With 

    With Worksheets("Sheet1") 
     MsgBox CBool(.Range("A9").DisplayFormat.Interior.Color = 13551615) 
    End With 
End Sub 

值得注意的是.DisplayFormat不能在用户定义函数(aka UDF)中使用。

+0

好了,因为我不能使用的显示格式作为一个函数,我可以使用worksheetfunction.find(“totals:”)?我期望的最终结果是能够识别细胞,然后预成型一个功能。什么运营商最适合这个? – andrew

+0

我应该注意每一行是不同的。但它们都共享共同字词总数: – andrew

+0

您可以在总计:或CFR颜色上使用.AutoFilter。 – Jeeped

0

感谢您的帮助!你为我节省了很多时间。这就是我最终使用包住人cares.i最终注意到最后一个字是总让我可以使用正确的函数

Sub Macro6() 

lastrow = Sheet4.Cells(Sheet4.Rows.Count, "A").End(xlUp).Row 
Dim A As Integer 
For N = 1 To lastrow 

A = 1 
If Right(Sheet4.Cells(N, 1), 7) = "Totals:" Then 
' MsgBox ("Found at" & Sheet4.Cells(N, 1)) 
'MsgBox (N) 
Sheet4.Cells(N, 1).Interior.Color = 13551615 

Else 
'nothing 
' MsgBox ("Found at" & Sheet4.Cells(N, 1)) 
' MsgBox (N) 
End If 
'A = A + 1 
Next 


End Sub