Parcourez les plages nommées du classeur; vérifiez que chaque nom fait référence à une plage sur cette feuille de calcul et que la plage nommée fait référence à une plage qui est au moins partiellement dans la première ligne.
Dim n As Long, vColNames As Variant
Dim c As Long, twb As Workbook
Set twb = ThisWorkbook
With Worksheets("Sheet1")
With .Cells(1, 1).CurrentRegion
'dim the array one-based to parallel the columns
ReDim vColNames(1 To .Columns.Count)
'loop through all names looking for ones that intersect first row
For n = 1 To twb.Names.Count
'check the parent worksheet first
If twb.Names(n).RefersToRange.Parent.Name = .Parent.Name Then
' next check to ensure first row is part of named range
If Not Intersect(twb.Names(n).RefersToRange, .Rows(1), .Cells) Is Nothing Then
vColNames(Intersect(twb.Names(n).RefersToRange, .Rows(1)).Cells(1, 1).Column) = _
twb.Names(n).Name
End If
End If
Next n
End With
End With
For c = LBound(vColNames) To UBound(vColNames)
Debug.Print vColNames(c)
Next c
noms avec la portée du classeur sortira comme myNamedRange; ceux avec la portée de la feuille de travail seront sous la forme Sheet1! myNamedRange.
Que voulez-vous dire nom de boîte? Pourriez-vous poster une capture d'écran et fournir plus de détails? – Will
@Will - Je prends cela pour être * plages nommées * avec la * boîte de nom * à gauche de la barre de formule. – Jeeped