Excel 检查合并单元格是否为空
我有一个Excel 2003电子表格,其中混合了英国日期和货币格式的单元格。我无法更改电子表格的结构。在VBA中,在工作表更改事件期间,我想检查用户是否已从由合并单元格组成的多个范围中删除数据。我尝试过IsNull和IsEmpty,但它们在合并的单元格上不起作用。使用Range.value=“”会引发错误 更简单地说, 如果发生变更事件,并且 更改涉及一个由合并单元格和 更改是从合并的单元格中删除数据 然后Excel 检查合并单元格是否为空,excel,if-statement,merge,cells,Excel,If Statement,Merge,Cells,我有一个Excel 2003电子表格,其中混合了英国日期和货币格式的单元格。我无法更改电子表格的结构。在VBA中,在工作表更改事件期间,我想检查用户是否已从由合并单元格组成的多个范围中删除数据。我尝试过IsNull和IsEmpty,但它们在合并的单元格上不起作用。使用Range.value=“”会引发错误 更简单地说, 如果发生变更事件,并且 更改涉及一个由合并单元格和 更改是从合并的单元格中删除数据 然后 出口接头 其他的 我现有的代码包括这个。。。 如果结束 我已经阅读了很多论坛,寻找一个简
出口接头 其他的 我现有的代码包括这个。。。 如果结束
我已经阅读了很多论坛,寻找一个简单的解决方案,但还没有什么能解决这个问题。谢谢你的帮助。谢谢,继续努力 在处理
更改事件时,需要考虑三种情况:
目标
仅由未合并的
单元格组成
目标
仅由单个合并的
范围组成
目标
由一个或多个合并的
范围加上零个或多个未合并的
单元格组成
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
+1,很好地解释和编码。我不需要经常处理合并的单元格,而且总是需要重新学习VBA。这很清楚。