将条件格式应用于相邻的单元格?

我有一些我想要search和突出显示的文本数据。

这是每天/每月/每年的任务按频率组织(按组分类)…所以我有一个单独的盒子每天,每周等

每组有3列…“types”,“频率”和“描述”。

我有一个Listbox ,其中包含所有types的任务,当您select一个button并按下button时,它将突出显示所有与此相对应的任务。

到目前为止,我已经能够做到这一点的唯一方法是通过VBA条件格式。

但它只是突出了任务的types,我一直无法弄清楚如何使它也突出显示旁边的两列…

我正在探索如何做一个search,但不能正确实施。

这是我的代码

 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 

好吧,正如我在评论中所说的,build议是把macros放在一起。 对不起,如果这个文本感到居高临下,但是以你的“巨大noob”的陈述,我认为最好假设你什么都不知道。 请执行下列操作

注意! 每当我把一些东西放在括号内,并说“写这个”,不要包括方括号。

有些地方,比如你现在有了你的列表框,你可以input你拥有或者拥有的所有任务types。 select所有这些,并命名该范围“taskTypes”

然后,find你想要“button”的单元格。 给它一个很好的颜色,然后去数据选项卡,select数据validation,并在“允许”下拉列表中select“列表”。 然后会出现一个标有“Source”的新文本框。 在那里input“= taskTypes”。

将该单元命名为“taskSelectorCell”。 这个单元格将成为一个下拉列表(需要将鼠标hover在其上方,以便下拉箭头出现,因此可以看到它的位置)

然后在“日常任务”表中select左上angular的单元格,然后创build一个新的条件格式设置规则(主页选项卡)。 select“使用公式来确定要格式化的单元格”。 现在,我在日常任务中左上angular的单元格是E2,所以我的条件格式公式成为:

 =$E2=taskSelectorCell 

然后select一种格式的格式。 我select了红色背景,就像你一样。 现在,只要taskSelectorCell改变,这个单元格(E2)就会变成红色。

要做最后一块,请selectE2,按条件格式和“pipe理规则”。 您创build的规则将在那里。 在标有“适用于”的boc中,select日常任务表和每周任务表(全部在一个选项中),然后应用。 现在,只要您在taskSelectorCell下拉列表中select了某些内容,那么这两个表格中的所有内容都将标记为红色,types,频率和说明。

既然你有你的团队并肩,我们不能使用一个公式的所有表(除非我们玩偏移函数,但如果你是一个巨大的Excel优化,我们不这样做,因此,你需要重复这个过程两次。一次为每月任务,一次为“按需”任务。

我会build议这样的事情:

  1. 在你的代码中应用你的条件格式
  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