我想要搜索并突出显示一些文本数据。
每日/每月/每年的任务按频率组织(并按组分开)......所以我每天,每周等都有一个单独的框。
每组有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 :(得分:1)
好的,正如我在评论中所说,建议是将宏放在一起。对不起,如果这篇文章感觉居高临下,但是接受你的“巨大菜鸟”的陈述,我认为最好假设你什么都不知道。请执行以下操作
请注意!每当我把一些东西放在括号中并说“写这个”时,不要包括那些支持者。
某些地方,例如您现在拥有列表框的地方,请输入您拥有或可能拥有的所有任务类型。选择所有这些,并将该范围命名为“taskTypes”
然后,找到您想要“按钮”的单元格。给它一个漂亮的颜色,然后转到数据选项卡,选择数据验证,并在“允许”下拉菜单中选择“列表”。然后,将出现一个标有“Source”的新文本框。在那里输入“= taskTypes”。
将此单元格命名为“taskSelectorCell”。这个单元格将成为一个下拉列表(需要将鼠标悬停在它上面以显示下拉箭头,因此可以看到漂亮的颜色)
然后在“每日任务”表中选择左上角的单元格,并创建新的条件格式设置规则(“主页”选项卡)。选择“使用公式确定要格式化的单元格”。现在,我在“每日任务”中的左上角单元格是E2,所以我的条件格式化公式变为:
=$E2=taskSelectorCell
然后选择格式格式。我选择了红色背景,就像你一样。现在,只要taskSelectorCell发生变化,这将允许该单元格(E2)变为红色。
要完成最后一部分,请选择E2,按条件格式和“管理规则”。你创建的规则就在那里。在标有“适用于”的boc中,选择每日任务表和每周任务表(全部在一个选项中),然后应用。现在,每当您在taskSelectorCell下拉列表中选择某些内容时,这两个表中的所有内容都将标记为红色,类型,频率和描述。
由于你的小组并排,我们不能对所有的表使用一个公式(除非我们使用偏移函数,但如果你是一个巨大的excel noob,那就不要这样做。因此,你需要重复处理两次。一次用于每月任务,一次用于“按需”任务。
答案 1 :(得分:0)
我会建议这样的事情:
以下是代码:
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