繁体   English   中英

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

[英]Apply Conditional Formatting to Adjacent Cells?

我有一些文本数据想要搜索并突出显示。

它是每天/每月/每年的任务,按频率组织(并按组分开)...所以我有一个单独的框用于每天,每周等。

每个组有3列...“类型”,“频率”和“描述”。

我有一个Listbox ,其中包含所有任务类型,当您选择一个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

好的,正如我在评论中所述,建议将所有宏都放在一起。 抱歉,如果本文不失为上纲,但以您的“巨大菜鸟”为准,我认为最好是假设您一无所知。 请执行下列操作

注意! 每当我在括号中放一些东西并说“写”时,不要包括括号。

在某个地方(例如,现在您拥有列表框的地方),输入您拥有或可能拥有的所有任务类型。 选择所有这些,并命名为“ taskTypes”

然后,找到一个要放置“按钮”的单元格。 给它一个漂亮的颜色,然后转到“数据”选项卡,选择“数据验证”,然后在“允许”下拉列表中选择“列表”。 然后,将出现一个标记为“源”的新文本框。 在此处输入“ = taskTypes”。

将此单元命名为“ taskSelectorCell”。 该单元格将成为一个下拉列表(需要将鼠标悬停在该列表上,以便显示下拉箭头,因此可以通过漂亮的颜色查看其位置)

然后在“日常任务”表中选择左上方的单元格,并创建一个新的条件格式设置规则(“主页”选项卡)。 选择“使用公式来确定要格式化的单元格”。 现在,我在“日常任务”中左上角的单元格是E2,因此我的条件格式公式变为:

=$E2=taskSelectorCell

然后选择一种格式格式。 和您一样,我选择了红色背景。 现在,每当taskSelectorCell更改时,这将使该单元(E2)变为红色。

要完成最后一部分,请选择E2,按条件格式,然后单击“管理规则”。 您创建的规则将在那里。 在标有“适用于”的Boc中,选择“每日任务”表和“每周任务”表(全部选择),然后应用。 现在,无论何时在taskSelectorCell下拉列表中选择某项,这两个表中的所有任务将被标记为红色,类型,频率和描述。

由于您的组是并排的,因此我们不能对所有表使用一个公式(除非我们使用offset函数,但是如果您是一个巨大的excel noob,就不要这样做。因此,您需要重复两次该过程。一次执行每月任务,一次执行“按需”任务。

我建议这样的事情:

  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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM