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 Namn

End 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 Name  

   Set wbBok = ThisWorkbook


   
'Ta bort enstaka namn
   wbBok.Names(
"Namn1").Delete
 

   'Ta bort alla namn
  
For Each Namn In wbBok.Names
      Namn.Delete
  
Next Namn

 End Sub