【问题标题】:Excel VBA conditional formatting based on next cell value基于下一个单元格值的 Excel VBA 条件格式
【发布时间】:2012-05-29 15:34:48
【问题描述】:

我正在尝试在 Excel 中对字体大小进行一些条件格式化,但由于无法从格式菜单中完成,因此需要使用 VBA 完成。

我有一个 B6 到多行的范围,我想查看它旁边的单元格,看看它是否为空白(C 列)。如果是,则将单元格格式化为粗体和 11pt。如果它不是空白,那么它需要是正常的,9pt。

我现在的代码只使最后一行加粗和 11pt 以及该列的其余部分,即使 C 列为空,也将是正常的 9pt。

出了什么问题?顺便说一句,我使用的是 Excel 2003

Dim c As Range, rng
Dim LASTROW As Long

LASTROW = Cells(Rows.Count, 1).End(xlUp).Row

Set rng = Range("B6:B" & LASTROW)
For Each c In rng
    If Len(c.Offset(1, 0)) = 0 Then
        c.Font.Bold = True
        c.Font.Size = 11
    Else
        c.Font.Bold = False
        c.Font.Size = 9
    End If
Next c

【问题讨论】:

  • 可以使用公式通过条件格式来做到这一点
  • 使用 Excel 2003,因此更改字体大小的选项显示为灰色
  • 它在 XL 2007/10 中也不可用。您必须使用 VBA 来更改字体大小。
  • @DougGlancy:font size 非常正确 :)

标签: vba excel


【解决方案1】:

您的偏移参数是向后的。您正在检查当前单元格下方的单元格。

【讨论】:

    【解决方案2】:

    注意诀窍是使用单个规则,为左上角单元格编码

    【讨论】:

    • 您不能使用条件格式来更改任何版本的 Excel 中的字体大小。
    【解决方案3】:

    这不需要宏 - 您可以使用条件格式中的公式来完成。

    假设当 C 列中的单元格的值为“红色”时,您想将 B 列中的相邻单元格突出显示为红色:

    =IF(C6="Red",TRUE,FALSE)
    

    然后像往常一样用填充句柄填充。

    规则编辑器 (2007):

    【讨论】:

    • 您不能使用条件格式来更改任何版本的 Excel 中的字体大小。
    • -1 用于使用 If 语句。条件格式中的“条件”意味着您只需使用 "=C6="Red" 之类的东西。
    • @DougGlancy 很公平,我只是觉得这样读起来更清楚。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2020-01-24
    • 2020-07-08
    • 2013-09-05
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多