如何防止宏在隐藏的单元格中执行?

时间:2019-04-17 14:49:53

标签: excel vba

我正在创建一个宏,用HTML实体替换特殊字符,我希望该宏仅适用于未隐藏的单元格。

我尝试过Hidden属性,但是对于VBA来说我还太陌生,不知道如何使用它。

到目前为止,我的代码是:

Sub replaceTextWithHTML()

Cells.Replace What:="–", Replacement:="–", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
    ReplaceFormat:=False

[other similar replacements]

End Sub

在包含隐藏的行,列或工作表的工作簿中运行时,宏也会修改其内容。我希望宏只编辑可见的内容。

2 个答案:

答案 0 :(得分:1)

如果单元格的列或行被隐藏,则该单元格被隐藏:

Sub hgfds()
    Dim cell As Range
    For Each cell In ActiveSheet.UsedRange
        If cell.EntireRow.Hidden = False And cell.EntireColumn.Hidden = False Then
            cell.Replace what:="-", replacement:="&ndash"
        End If
    Next cell
End Sub

答案 1 :(得分:0)

你可以尝试

For Each cells In Selection.SpecialCells(xlCellTypeVisible)
   Cells.Replace What:="–", Replacement:="–", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
    ReplaceFormat:=False
Next cells

它检查每个单元格是否可见。它可能需要一些时间才能运行...