在Excel VBA中合并单元格的错误处理

时间:2016-02-06 15:56:05

标签: excel excel-vba vba

我目前正在开发Excel的加载项,它会自动格式化表格。用户在准备表时必须遵循特定的格式,否则"合并单元格的常见错误仅保留左上角的单元格值,并丢弃其他值。"必然会出现。

我想从Excel中静音此警报,但仍希望捕获此错误并向用户传递不同的消息以终止此子。我试过这个:

Sub FormatTable()
    On Error Goto ErrHandler
    Application.DisplayAlerts = False
    'Codes for formatting the table
    Exit Sub
ErrHandler:
    MsgBox "Incorrect formatting. Terminating process to conserve data."
End Sub

但是,我确实意识到使用" Application.DisplayAlerts = False"将导致Excel选择默认操作并继续合并导致大混乱的单元格。它不会去ErrHandler。是否有某种方法可以实现这一目标?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在运行代码之前测试所选范围内的合并单元格:

Public Function HasMergedCells(oRng As Range)
    Dim oCell As Range
    Dim oArea As Range
    For Each oArea In oRng.Areas
        For Each oCell In oArea.Cells
            If oCell.MergeArea.MergeCells Then
                HasMergedCells = True
                Exit Function
            End If
        Next
    Next
End Function