簡體   English   中英

Range SpecialCells ClearContents 改為清除整個工作表

[英]Range SpecialCells ClearContents clears whole sheet instead

我在 Excel 2010 中有一個工作表,它設置為偽表單(我沒有創建它,我只是想修復它),因此格式表明用戶只能輸入某些單元格。 根據某些功能,這些區域需要重置,即清除,盡管需要保留公式和標准/條件格式。 我已將這些單元格/范圍中的每一個定義為命名范圍,因此我可以使用以下代碼輕松地遍歷它們:-

Public Sub ResetDetailSheet()
    Dim nm As Name

    With ThisWorkbook
        For Each nm In .Names
            If Left(nm.Name, 9) = "nmrDetail" Then
                Range(nm.Name).SpecialCells(xlCellTypeConstants).ClearContents
            End If
        Next
    End With
End Sub

由於某種原因,它不是從特定范圍中清除常量,而是從整個工作表中清除常量,所以我丟失了所有標題/標題。 公式和標准/條件格式保持不變。

我究竟做錯了什么?!?!

作為使用即時窗口的測試,我嘗試清除特定單元格,例如

Range("G7").SpecialCells(xlCellTypeConstants).ClearContents

但這仍然清除了整個工作表中的所有常量。

我錯過了什么? 我不明白。 可能是我傻了。 抱歉,我無法上傳示例。 這個地方很封閉。

Range({any single cell}).SpecialCells({whatever})似乎適用於整個工作表。

Range({more than one cell}).SpecialCells({whatever})似乎對指定的單元格有效。

因此,在清除之前確保您的范圍有多個單元格 - 如果范圍只有一個單元格,請檢查它是否為.HasFormula 如果是這樣,那么它的.Value不是一個常數:

With ThisWorkbook
    For Each nm In .Names
        If Left(nm.Name, 9) = "nmrDetail" Then
            If nm.RefersToRange.Count > 1 Then
                nm.RefersToRange.SpecialCells(xlCellTypeConstants).ClearContents
            ElseIf Not nm.RefersToRange.HasFormula Then
                nm.RefersToRange.ClearContents
            End If
        End If
    Next
End With

請注意,我使用的是Name.RefersToRange ,而不是按名稱從活動工作表中獲取范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM