[英]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.