检查合并的单元格是否空白
我有一个Excel 2003电子表格包含英国date和货币格式的单元格的混合。 我无法更改电子表格的结构。 在VBA中,在工作表更改事件期间,我想检查用户是否已从合并单元格组成的许多范围中删除数据。 我已经尝试过IsNull和IsEmpty,但是它们不能在合并的单元格上工作。 使用Range.value =“”抛出一个错误。
简单来说,
如果发生更改事件并且更改涉及由合并的单元格组成的范围并且该更改是从合并的单元格中删除数据然后
退出小组我现有的代码涵盖了这个…如果结束
我已经阅读了广泛的论坛,为一个简单的解决scheme,但没有什么诀窍。 感谢任何帮助。 谢谢你,并保持伟大的工作!
在处理Change
事件时,您需要考虑三种场景:
-
Target
仅包含未Unmerged
单元 -
Target
包含一个Merged
范围 -
Target
由一个或多个Merged
范围加上零个或多个Unmerged
Merged
单元组成
Range.MergeCells
属性揭示了这些可能性:
-
Range.MergeCells = FALSE
-
Range.MergeCells = TRUE
-
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