2015-06-17 76 views
0

我有一些我想要搜索和突出顯示的文本數據。將條件格式應用於相鄰單元格?

這是每天/每月/每年的任務由頻率組織(和分隔組)的...所以我有一個單獨的盒子每日,每週等

有3列各組。 ..「類型」,「頻率」和「說明」。

我有一個Listbox有任務的所有類型的它,當你選擇一個,然後按一個按鈕,它突出了所有對應的任務......

到目前爲止的唯一途徑我已經能夠通過VBA條件格式來做到這一點。

但只突出了任務的類型,我一直無法弄清楚如何使它也突出了它旁邊的兩列...

我正在探索如何做到這一點有搜索但無法正確實施。

這裏是我的代碼

Private Sub CommandButton1_Click() 
    Dim typeSelection As String 
    Dim rng As Range 
    Set rng = Sheet4.Range("$E$3:$O$23") 
    typeSelection = ListBox1.Text 
    Debug.Print rng.Address 
    With rng 
     .FormatConditions.Delete 
     .FormatConditions.Add Type:=xlTextString, String:=typeSelection, _ 
      TextOperator:=xlBeginsWith 
     .FormatConditions(1).Interior.Color = RGB(255, 0, 0) 
     .FormatConditions(1).Font.Bold = True 
     'Debug.Print .FormatConditions(1).AppliesTo.Address 
     '.FormatConditions(1).ModifyAppliesToRange .FormatConditions(1).AppliesTo.Offset(RowOffSet:=0, ColumnOffset:=2) 
     '.FormatConditions(1).Interior.Color = RGB(255, 0, 0) 
     '.FormatConditions(1).Font.Bold = True 
     'Debug.Print .FormatConditions(1).AppliesTo.Address 
    End With 
    Dim rCell As Range 
    Dim cRng As Range 
    For Each rCell In rng.Cells 
     Set cRng = rCell 
     Debug.Print rCell.Address 
     isConditionallyFormatted (rCell) 
    Next rCell 
End Sub 
+0

您是否嘗試過使用數據驗證下拉菜單進行常規條件格式化(非vba),或者是否會達不到您想要的結果。據我所知,它會(如果是的話,我可以發佈解決方案) – gudal

+0

對不起,我還沒有嘗試探索數據val。我是一個巨大的excel noob – kanda

+0

我會給解決方案的一個裂縫,如果你證實我的理解你的問題: 你有「重大」專欄,每日,每月和每年的任務。每欄有3列,標題類型,頻率和說明。你希望有一個下拉列表(或者每個主要列/組的一個下拉列表)和所有任務類型(這些列表是否在某個列表中預先定義了這些列表?),並且在選擇時,它應該突出顯示所有類型的任務類型,頻率和描述。正確? 而且,這些組在A:C,D:F和G:I在同一張紙上? – gudal

回答

0

我會suggesst是這樣的:

  1. 應用條件格式在你的代碼
  2. 然後循環範圍內,以檢測突出顯示,並突出2 其他水平相鄰的單元格,並以斜體形式傳遞它們以避免 考慮它們,如有條件地生成
  3. 再通過在整個範圍內沒有斜體

下面是代碼:

For Each rCell In rng.Cells 
    With rCell 
     If .Interior.Color <> RGB(255, 0, 0) Or .Font.Italic <> False Then 
     Else 
      Range(rCell.Offset(, -1), rCell.Offset(, 1)).Interior.Color = RGB(255, 0, 0) 
      Range(rCell.Offset(, -1), rCell.Offset(, 1)).Font.Bold = True 
      Range(rCell.Offset(, -1), rCell.Offset(, 1)).Font.Italic = True 
     End If 
    End With 
Next rCell 
rng.Font.Italic = False 
+0

嘿這似乎很好,但有一個問題,這個問題是細胞已經着色稍微 - 其中一些有不同的背景顏色即使如此,它看起來似乎並沒有像選擇以編程方式突出顯示的單元格那樣不同 - 它顯示了它們的原始顏色代碼 – kanda

1

好吧,我在註釋中規定,通過的建議是放棄宏一起。對不起,如果這段文字感到居高臨下,但以「巨大的小白菜」的陳述,我認爲最好假設你什麼都不知道。請執行以下操作:

注意!每當我把一些東西放在括號內,並說「寫這個」,不要包括方括號。

某些地方,例如你現在有你的列表框的地方,輸入你擁有或可能擁有的所有任務類型。選擇所有這些,並命名該範圍「taskTypes」

然後,找到一個您想要「按鈕」的單元格。給它一個很好的顏色,然後去數據選項卡,選擇數據驗證,並在「允許」下拉列表中選擇「列表」。然後,將出現標有「Source」的新文本框。在那裏輸入「= taskTypes」。

將此單元命名爲「taskSelectorCell」。這個單元格將成爲一個下拉列表(需要將鼠標懸停在其上方,以便下拉箭頭出現,因此可以看到它的好色)

然後在「每日任務」表格中選擇左上角的單元格,並創建一個新的條件格式設置規則(主頁選項卡)。選擇「使用公式確定要格式化的單元格」。現在,在「日常任務」我的左上角單元格爲E2,所以我的條件格式公式變成:

=$E2=taskSelectorCell 

然後選擇一種格式格式。像我一樣,我選擇了紅色背景。現在,只要taskSelectorCell更改,這將允許該單元格(E2)變爲紅色。

要做最後的作品,請選擇E2,按條件格式和「管理規則」。您創建的規則將在那裏。在標記爲「適用於」的boc中,選擇日常任務表和每週任務表(全部在一個選項中)並應用。現在,無論您在taskSelectorCell下拉列表中選擇了什麼,這兩個表格中的所有tak都將標記爲紅色,類型,頻率和說明。

既然你有你的團體並排,我們不能使用一個公式的所有表(除非我們玩偏移函數,但如果你是一個巨大的excel noob,我們不這樣做,因此,你需要重複過程兩次,一次爲每月任務,一次爲「按需」任務。

+1

它使用數據驗證是不利的。就像使用命名範圍而不是引用或直接在數據val字段中寫入一樣。 – gudal

相關問題