2017-04-27 87 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