【问题标题】:Check if merged cells are blank检查合并的单元格是否为空白
【发布时间】:2012-12-19 12:02:41
【问题描述】:

我有一个 Excel 2003 电子表格,其中包含英国日期和货币格式的单元格。我无法更改电子表格的结构。在 VBA 中,在工作表更改事件期间,我想检查用户是否已从由合并单元格组成的多个范围中删除了数据。我尝试过 IsNull 和 IsEmpty,但它们不适用于合并的单元格。使用 Range.value = "" 会引发错误。

简而言之;

如果发生更改事件并且 更改涉及由合并单元格组成的范围和 更改是从合并的单元格中删除数据 那么
退出子 别的 我现有的代码涵盖了这个...... 结束如果

我已经阅读了广泛的论坛以寻求一个简单的解决方案,但还没有任何方法可以解决问题。感谢任何帮助。感谢并继续努力!

【问题讨论】:

    标签: excel if-statement merge cells


    【解决方案1】:

    在处理Change 事件时,您需要考虑三种情况:

    1. Target 仅包含 Unmerged 单元格

    2. Target 仅包含一个 Merged 范围

    3. Target 由一个或多个 Merged 范围加上零个或多个 Unmerged 单元格组成

    Range.MergeCells 属性揭示了这些可能性:

    1. Range.MergeCells = FALSE

    2. Range.MergeCells = TRUE

    3. Range.MergeCells = NULL

    Range.MergeCells = NULL 时,您需要分别检查Target 范围内的每个单元格,以查看哪些已合并

    类似的东西

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim cl As Range
    
        If IsNull(Target.MergeCells) Then
            'Changed Range contains one or more Merged cells and other cells
            For Each cl In Target.Cells
                If cl.MergeCells Then
                    ' only consider top left cell of a merged range
                    If cl.Address = cl.MergeArea.Cells(1, 1).Address Then
                        If cl = "" Then
                            MsgBox "Merged Cell Deleted " & cl.MergeArea.Address
    
                        End If
                    End If
                End If
            Next
        Else
            If Target.MergeCells Then
                ' Changed Range is a single Merged cells
                If Target.Cells(1, 1) = "" Then
                    MsgBox "Merged Cell Deleted " & Target.Address
    
                End If
            Else
                'Changed Range is Unmerged cells only
            End If
        End If
    End Sub
    

    【讨论】:

    • +1,很好的解释和编码。我不必经常处理合并的单元格,并且总是必须重新学习 VBA。这个很清楚了。
    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多