【问题标题】:Conditional Formatting - Skip empty cells/values条件格式 - 跳过空单元格/值
【发布时间】:2018-04-10 17:44:20
【问题描述】:

我是宏的新手。我创建了一个非常简单的宏,它允许在工作表中格式化一系列单元格。宏在工作表中工作正常,但是当我将文档保存为 csv 文件时,会有几个尾随逗号。我知道尾随逗号是使用工作表的空值进行格式化的结果。我需要宏来仅格式化包含数据的单元格,但我还需要保留单元格的范围。这可能吗?我尝试了条件格式、CountA 公式、IsEmpty 宏和 Is/Then/Else 宏,但似乎没有任何效果。我提供了一个我一直在使用的数据示例,我们将不胜感激。

Sub FormatDollarAmount()

    Set MyCellRange = Range("F2:F51")

    If (Not (IsEmpty("F2:F51"))) Then

        Range("F2:F51").NumberFormat = "#,##0.00;_(@_)"

    Else

    End If

End Sub

【问题讨论】:

  • 阅读下面的答案。只有在整个范围内没有值时,您的代码才会起作用。如果任何单元格中有一个值,它将将该格式应用于整个范围。您需要遍历每个单元格。

标签: excel vba


【解决方案1】:

只要标题是关于条件格式的,这里就是一个条件格式响应,每次数据更改时都不需要重新运行。

with worksheets("sheet1")
    with .range(.cells(2, "F"), .cells(.rows.count, "F").end(xlup))
        .formatconditions.delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=sign(len($f2))"
        .FormatConditions(.FormatConditions.Count).numberformat = "#,##0.00;_(@_)"
    end with
end with

【讨论】:

    【解决方案2】:

    您可以遍历单元格:

    Sub FormatDollarAmount()
        Set MyCellRange = Range("F2:F51")
        For each myCell in myCellRange
            If (Not (IsEmpty(myCell))) Then
                myCell.NumberFormat = "#,##0.00;_(@_)"
            Else
    
            End If
        Next myCell
    End Sub
    

    【讨论】:

    • 谢谢!!我唯一要做的就是在“End If”下添加“Next”。一旦我这样做了,宏就会完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多