1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Option Explicit
Public Sub SetRangeNames()
Dim Wb As Excel.Workbook
Set Wb = ThisWorkbook
Dim Ws As Excel.Worksheet
Set Ws = Wb.Worksheets("range namer")
Dim RangeNames As Excel.Range
Set RangeNames = Ws.Range("RangeNames")
Dim Row As Excel.Range
For Each Row In RangeNames.Rows
Dim Name As String
Name = Row.Cells(2).Value
Dim RefersTo As String
RefersTo = Row.Cells(1)
On Error GoTo Error
If Not (ExistInCollection(Name, Wb.Names)) Then
Wb.Names.Add Name:=Name, RefersTo:=RefersTo
Else
Wb.Names(Name).RefersTo = RefersTo
End If
On Error GoTo 0
Next
Exit Sub
Error:
Row.Cells(2).Select
MsgBox Err.Description, vbOKOnly + vbCritical, "Erreur d'execution"
End Sub
Public Function ExistInCollection(ByVal Key As String, ByRef Col As Object) As Boolean
ExistInCollection = ExistInCollectionByVal(Key, Col) Or ExistInCollectionByRef(Key, Col)
End Function
Private Function ExistInCollectionByVal(ByVal Key As String, ByRef Col As Object) As Boolean
On Error GoTo Error
Dim Item As Variant
Item = Col(Key)
ExistInCollectionByVal = True
Exit Function
Error:
ExistInCollectionByVal = False
End Function
Private Function ExistInCollectionByRef(ByVal Key As String, ByRef Col As Object) As Boolean
On Error GoTo Error
Dim Item As Variant
Set Item = Col(Key)
ExistInCollectionByRef = True
Exit Function
Error:
ExistInCollectionByRef = False
End Function |
Partager