Namn i VBA
Här beskrivs hur vi kan skapa namn i kod och tilldela namngivna cellområden och konstanter värden. Att använda sig av namn även i VBA kan öka möjligheterna att hantera cellområden på ett flexibelt och mer strukturellt sätt och att underhållsarbetet kan underlättas.
Se också:
Option Explicit
Sub Skapa_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad As Worksheet
Dim rnOmrade As Range
Dim Namn As Name
Set wbBok = ThisWorkbook
Set wsBlad = wbBok.Worksheets("Blad1")
With wsBlad
Set rnOmrade = .Range("A1:A10")
End With
'Skapa första namnet för cellområdet
rnOmrade.Name = "Namn1"
'Skapa andra namnet för cellområdet
rnOmrade.Name = "Namn2"
'Skapa namn för diskontinuerligt cellområde
wsBlad.Range("E2:E8,G5:G10").Name = "XLDennis"
'Skapa namn för konstant värde
wbBok.Names.Add Name:="Procent", RefersTo:=0.25
'Tilldela namngivna cellområden värden
Range("Namn1").Value = 2
Range("XLDennis").Value = wbBok.Names("Namn1").RefersToRange.Value
For Each Namn In wbBok.Names
MsgBox "Namn= " & Namn.Name & vbCrLf & "Cellområde/Värde: " & Namn.RefersTo
Next NamnEnd Sub
Sub Skapa_Förskjutna_Namn_()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad As Worksheet
Dim rnOmrade As Range
Dim Namn As Name
Set wbBok = ThisWorkbook
Set wsBlad = wbBok.Worksheets("Blad1")
With wsBlad
Set rnOmrade = .Range("A1:A10")
End With
'Skapa namn för cellområdet intill, dvs B1:B10
rnOmrade.Offset(0, 1).Name = "Namn3"End Sub
Sub Skapa_Tva_Identiska_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad1 As Worksheet, wsBlad2 As Worksheet
Dim Namn As Name
Set wbBok = ThisWorkbook
Set wsBlad1 = wbBok.Worksheets("Blad1")
Set wsBlad2 = wbBok.Worksheets("Blad2")
'För att skapa namn knyts dessa till respektive arbetsblad
'genom att ange i namnet arbetsbladets namn.wsBlad1.Range("A1:A10").Name = "Blad1!Namn4"
wsBlad2.Range("A1:A10").Name = "Blad2!Namn4"End Sub
Sub Ta_Bort_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim Namn As NameSet wbBok = ThisWorkbook
'Ta bort enstaka namn
wbBok.Names("Namn1").Delete
'Ta bort alla namn
For Each Namn In wbBok.Names
Namn.Delete
Next NamnEnd Sub