Skapa formellista för aktivt arbetsblad

 

Att dokumentera arbetsböcker är alltid  värdefullt, i synnerhet på lång sikt. Inte minst vid revidering av mer komplexa arbetsböcker.

Här demonstreras hur vi kan dokumentera formler för ett arbetsblad.

 

Option Explicit

Sub Skapa_Formel_Lista()
'© 2002 Alla rättigheter XL-Dennis
Dim wsBlad As Worksheet
Dim rnCell As Range
Dim stTitel As String
Dim i As Integer


stTitel = "Skapa formellista"

'Felhantering ifall det inte finns celler med formler
'i det aktiva arbetsbladet.
On Error Resume Next
Set rnCell = Range("A1").SpecialCells(xlFormulas, 23)


If rnCell Is Nothing Then
        MsgBox "Inga formler hittades!", vbInformation, stTitel
        Exit Sub
End If


With Application
      .DisplayAlerts = False
      .ScreenUpdating = False
End With

With ActiveWorkbook
       .Worksheets("Formler i " & rnCell.Parent.Name).Delete
       .Worksheets.Add before:=Worksheets(1)
End With
On Error GoTo 0

Set wsBlad = ActiveSheet
wsBlad.Name = "Formler i " & rnCell.Parent.Name

With wsBlad
         Range("A1") = "Celladress"
         Range("B1") = "Formel"
         Range("C1") = "Värde"
         With Range("A1:C1")
                           .Font.Bold = True
                           .Font.ColorIndex = 10
                           .Font.Size = 9
         End With
End With


i = 2
For Each rnCell In rnCell
        With wsBlad
               Cells(i, 1) = rnCell.Address _
               (RowAbsolute:=False, ColumnAbsolute:=False)

               'Beroende på formelkonstruktion visas olika resultat
               If rnCell.HasArray Then
                       Cells(i, 2) = "{" & rnCell.Formula & "}"
               Else
                       Cells(i, 2) = " " & rnCell.Formula
               End If
               Cells(i, 3) = rnCell.Value
               i = i + 1
        End With
Next rnCell

wsBlad.Columns("A:C").AutoFit

With Application
       .StatusBar = False
       .DisplayAlerts = True
       .ScreenUpdating = True
End With
End Sub