Excel 是否清除图纸上指定范围内的命名范围?
清除图纸部分中所有命名范围的最佳方法是什么 比如:Excel 是否清除图纸上指定范围内的命名范围?,excel,vba,Excel,Vba,清除图纸部分中所有命名范围的最佳方法是什么 比如: Sheets("A").Range("A1:D10").ClearNames 我不知道ClearNames,但我会这样做。样本: Option Explicit Sub DeleteNamedRanges() Dim targetWorksheet As Worksheet Dim targetRange As Range Dim nameObject As Name Dim namedRange As Range Di
Sheets("A").Range("A1:D10").ClearNames
我不知道ClearNames,但我会这样做。样本:
Option Explicit
Sub DeleteNamedRanges()
Dim targetWorksheet As Worksheet
Dim targetRange As Range
Dim nameObject As Name
Dim namedRange As Range
Dim unionedRange As Range
Set targetWorksheet = Worksheets("MySheetName")
Set targetRange = targetWorksheet.Range("A1:D10")
For Each nameObject In ActiveWorkbook.Names
Set namedRange = nameObject.refersToRange
If (namedRange.Worksheet.Name <> targetWorksheet.Name) Then GoTo Continue
Set unionedRange = Application.Union(namedRange, targetRange)
If (unionedRange.Address = targetRange.Address) Then
namedRange.Value = "" ' namedRange.Clear
End If
Continue:
Next nameObject
End Sub
选项显式
子DeleteNamedRanges()
将targetWorksheet设置为工作表
变暗目标范围作为范围
名称对象作为名称
暗名称范围
Dim unionedRange As范围
设置targetWorksheet=工作表(“MySheetName”)
设置targetRange=targetWorksheet.Range(“A1:D10”)
对于Active工作簿中的每个nameObject.Names
设置namedRange=nameObject.refrestorange
如果是(namedRange.Worksheet.Name targetWorksheet.Name),则转到继续
Set unionedRange=Application.Union(namedRange,targetRange)
如果(unionedRange.Address=targetRange.Address),则
namedRange.Value=“”namedRange.Clear
如果结束
继续:
下一个名称对象
端接头
如果您想删除该区域内的名称,这应该可以做到,请注意,它不仅从目标区域完全删除名称。因此,A1:D10内外存在的范围也将被删除
Option Explicit
Public Sub DeleteRangeNames()
Dim wsTarget As Worksheet
Dim rTarget As Range
Dim nTmp As Name
'Determine the range to clear all names from
Set wsTarget = Worksheets("enternamehere")
Set rTarget = wsTarget.Range("A1:D10")
'Loop through all Names in the worksheet
For Each nTmp In ActiveWorkbook.Names
'Check if they overlap (if no overlap the intersection is Nothing)
If Not (Intersect(nTmp.RefersToRange, rTarget) Is Nothing) Then
'Delete the Name object from the workbook
nTmp.Delete
End If
Next nTmp
End Sub