【问题标题】:Formatting a cell based on data in an another cell in same row根据同一行中另一个单元格中的数据格式化单元格
【发布时间】:2021-06-28 13:51:25
【问题描述】:

我想识别(突出显示)工作表第 4 列中的单元格,该单元格在同一行中包含单词“November”,但位于同一工作表的第 1 列中。

代码部分成功,因为宏确实在第 1 列中识别出单词“November”,但代码将突出显示第 4 列的整个范围,而不仅仅是第 4 列中与“November”位于同一行的单元格”。

一旦我能够让这段代码工作,我想将该行中突出显示的单元格的文本更改为“False”。

因此,在实践中,单词“November”将位于单元格 A35 中,而单词“True”将位于单元格 D35 中。我希望宏突出显示单元格 D35 并将单元格文本更改为“False”,因为单元格 A35 是“十一月”。

Sub Formatting()
    Dim Excel_File As Workbook
    Dim Tab_Report As Worksheet
    Dim tbl As ListObject
    Dim rng1 As Range
    Dim rng2 As Range

    Set Excel_File = ThisWorkbook
    Set Tab_Report = Excel_File.Worksheets("Tab_Report")
    Set tbl = Tab_Report.ListObjects("Excel_File")
    Set rng1 = tbl.ListColumns(1).DataBodyRange
    Set rng2 = tbl.ListColumns(4).DataBodyRange

    For Each cell In rng1
        If cell.Text = "November" Then rng2.Interior.Color = 11851260
    Next cell

End Sub

【问题讨论】:

  • 试试cell.offset(,3).Interior.Color = 11851260。您已将 rng2 定义为整个列。
  • 太棒了,这很有效,我如何为您的答案提供信用?所以实际上,我什至不需要定义 rng2。你知道我将如何将附加步骤添加到上面列出的宏中吗?
  • @SJR 我可以用这个vba For Each cell In rng1 If cell.Text = "November" Then cell.Offset(, 3) = "False" Next cell 解决了

标签: excel vba


【解决方案1】:

功劳归@SJR

Sub Formatting()

    Dim Excel_File As Workbook
    Dim Tab_Report As Worksheet
    Dim tbl As ListObject
    Dim rng As Range

    Set Excel_File = ThisWorkbook
    Set Tab_Report = Excel_File.Worksheets("Tab_Report")
    Set tbl = Tab_Report.ListObjects("Excel_File")
    Set rng = tbl.ListColumns(1).DataBodyRange


    For Each cell In rng
    If cell.Text = "November" Then cell.Offset(, 3).Interior.Color = 11851260
    Next cell

    For Each cell In rng
    If cell.Text = "November" Then cell.Offset(, 3) = "False"
    Next cell

End Sub

【讨论】:

  • 干得好,虽然你不需要循环两次。顺便说一句,我相信你可以接受你自己的答案。
猜你喜欢
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 2019-06-16
  • 1970-01-01
相关资源
最近更新 更多