【问题标题】:How to conditionally format a row in Excel VBA based on if first cell is empty?如何根据第一个单元格是否为空有条件地格式化 Excel VBA 中的一行?
【发布时间】:2021-05-27 23:14:23
【问题描述】:

我想做的很简单,我只是没有太多的 VBA / Excel 经验知道如何去做。 我正在开发一个宏来做一些不同的事情,我只是卡在这部分。

我想要做的是遍历所有行,如果行中的第一个单元格为空,我想选择整行并取消合并。我知道如果第一个单元格为空,则该行包含我想要取消合并的合并单元格。

我知道下面的这两行将选择第 2 行并取消合并,但我需要一种方法来循环我的数据并自动查找和取消合并行,因为行号不会每次都相同。

Rows("2:2").Select

Selection.UnMerge

我想做这样的事情:

For (each row) {
   if (the first cell is empty) {
       UnMerge all cells in that row;
   }
}

我只是不知道如何在 VBA 语法中做到这一点。

感谢任何帮助!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这应该可以完成工作。

    Sub UnmergeRows()
    
        Dim R       As Long                 ' loop counter: rows
        
        With Worksheets("Sheet1")           ' change tab name as required
            ' "B" should be the longest column in the worksheet
            For R = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
                If IsEmpty(.Cells(R, 1)) Then .Rows(R).MergeCells = False
            Next R
        End With
    End Sub
    

    【讨论】:

    • 我认为这很接近,但似乎还没有取消合并行。对于更多的上下文,我想做的是如果第一个单元格(在 A 列中)为空,那么我想选择整行,并取消合并整行中的所有单元格。我想检查我的所有数据行
    • 问题一定是第一个单元格不是空白的。尝试将IsEmpty(.Cells(R, 1)) 替换为Len(Trim(.Cells(R, 1).Value)) = 0。第一个单元格不是空白的行中是否有合并单元格?
    • 成功了!谢谢!我想它一定不能为空,尽管第一个单元格中没有文本或任何内容。诡异的。感谢您的帮助!
    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多