Opprette faner automatisk – og finne faner enkelt

| | | |

Opprette faner automatisk – og finne faner enkelt

De som liker å splitte opp data i mange faner, bruker tid på å f.eks opprette de tolv nye fanene de trenger for å registrere salg, timer eller hva det måtte være. I tillegg skal fanene gjerne stå i riktig rekkefølge – og ikke minst – man skal kunne finne tilbake til fanene i etterkant.

Les også: Om å velge Trøbbel eller Easypeasy når du legger inn data i Excel

I dette eksemplet følger det med to rutiner du kan ha nytte av:

  • Rutinen OpprettFaner, som oppretter faner for år og måneder med et knappetrykk.
  • Rutinen SortereFaner, som sorterer fanene i stigende rekkefølge

(Artikkelen fortsetter under videoruten)

Finne faner enkelt

Det er en litt hemmelig funksjon for å slå opp fanene i Excel. Nede i venstre hjørne kan du høyreklikke mellom de to pilene vi benytter for å bla i faner. Da får du opp et vindu hvor du kan velge faner fra en liste. Det er enkelt, det 🙂

Finne faner enkelt

Les også: Velge fane ved oppstart automatisk

Under har du de to rutinene som programmet benytter.

Subrutinen OpprettFaner

Denne rutinen opprette faner automatisk – hvis de ikke finnes fra før. Input henter fra definerte celler i fanen Parametre.

Sub OpprettFaner()
   Dim WS As Worksheet
   Dim PAR As Worksheet
   Dim MAL As Worksheet
   Dim SH As Worksheet
   
   Dim MalNavn As String
   Dim FaneNavn As String
   
   Dim Maaned As Long
   Dim Aar As Long
   
   Dim FraAar As Long
   Dim TilAar As Long
   Dim SkilleTegn As String
   Dim FraMnd As Long
   Dim TilMnd As Long
   
   Dim sSheets As String
   Dim PreFix As String
   
   Set PAR = Sheets("Parametre")
      
   'Hent informasjon om fanene som skal opprettes
   With PAR
    FraAar = .Cells(1, 2)
    TilAar = .Cells(2, 2)
    SkilleTegn = .Cells(3, 2)
    FraMnd = .Cells(4, 2)
    TilMnd = .Cells(5, 2)
    PreFix = .Cells(6, 2)
    MalNavn = Trim(.Cells(7, 2))
   End With
   
   'Sett malark hvis dette er angitt
   If MalNavn <> "" Then
    Set MAL = Sheets(MalNavn)
   End If
   
   'Finn eksisterende ark i boken og lage en streng av dem
   sSheets = "\"
   For Each SH In ThisWorkbook.Sheets
    sSheets = sSheets & SH.Name & "\"
   Next
   
   'Loop igjennom årene
   For Aar = FraAar To TilAar
    
    'Loop i gjennom månedene
    For Maaned = FraMnd To TilMnd
     
     'Formater faneneavnet som åååå.mm
     FaneNavn = PreFix & Aar & SkilleTegn & Format(Maaned, "00")
     
     If InStr(1, UCase(sSheets), "\" & UCase(FaneNavn) & "\") = 0 Then
     
     'Lag et nytt ark hvis mal ikke er angitt
     If MAL Is Nothing Then
      Set WS = Sheets.Add(Before:=PAR)
      WS.Name = FaneNavn
     Else
      'Eller lag kopi av malen
      MAL.Copy Before:=PAR
      ActiveSheet.Name = FaneNavn
     End If
     
     End If
     
    Next Maaned
   
   Next Aar
   
   SortereFaner
   
End Sub

Subrutinen SortereFaner

Denne rutinen sorterer fanene i arket i riktig rekkefølge. Hvis du vil bruke den i din egen arbeidsbok, kan du fjerne de fire linjene fra og med ‘Flytt MAL sist. Disse er spesifikke for eksempelarket.

Sub SortereFaner()

    Dim SHNavn As Collection
    Dim x As Long
    Dim y As Long
    Dim temp As String
    Dim SH As Worksheet

    Set SHNavn = New Collection

    'Legg arkene i samlingen
    For Each SH In ThisWorkbook.Worksheets
        SHNavn.Add SH.Name, SH.Name
    Next SH

    'Boblesortering
    For x = 1 To SHNavn.Count - 1
        For y = x + 1 To SHNavn.Count
            If SHNavn(x) > SHNavn(y) Then
               temp = SHNavn(y)
               SHNavn.Remove y
               SHNavn.Add temp, temp, x
            End If
        Next y
    Next x

   'Flytt arkene i stigende rekkefølge
   For x = SHNavn.Count - 1 To 1 Step -1
       Sheets(SHNavn(x)).Move Before:=Sheets(1)
   Next x

   'Flytt MAL sist
    Sheets("MAL").Move after:=Sheets(Sheets.Count)
   'Og så parametre helt til slutt
    Sheets("Parametre").Move after:=Sheets(Sheets.Count)

End Sub

Last ned regnearket her: Opprett Faner Autometisk (209 downloads )

Similar Posts