Fremhæv den aktive celle i et regneark

Når man har et meget stort regneark, kan det af og til være vanskeligt at se, hvilken celle, der er aktiv. Det kan dog altid aflæses i ruden til venstre i formellinjen. Det kan imidlertid, selv  om man kan aflæse adressen, være vanskeligt at se, om fx XAB149383 faktisk er den celle, man ønsker skal være aktiv. Derfor kan man have interesse i at fremhæve den aktive celle på anden vis. I denne artikel vil jeg give et par muligheder. De har dog hver især deres ulemper, men jeg har desværre ikke været i stand til at finde en enkelt løsning, der kan tilgodese alle udfordringerne.

En meget simpel løsning vil være at vise en meddelelsesboks med cellens adresse. Den giver dog ikke meget bedre information and adresse-ruden, men her kommer den alligevel.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "Den aktive celle er " & ActiveCell.Address
End Sub

NB! Som alle øvrige makroer i denne artikel skal koden lægges i kodemodulet for det ark, den skal bruges i. Skal koderne virke i alle ark i en given mappe ,skal den i stedet lægges i ThisWorkbook kodearket og den hændelse, der skal anvendes, skal være

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

En anden mulighed er at fremhæve den aktive celle med en farve, hvilket kan gøres med:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells.Interior.ColorIndex = 0
    Target.Interior.ColorIndex = 7
    Application.ScreenUpdating = True
End Sub


Udfordringen ved denne løsning er, at hvis man bruger den i et ark, der allerede indeholder en baggrundsfarver ville disse blive slettet i hele arket.

Man kan også farve såvel rækkke som kolonne, der indeholder den aktive celle:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells.Interior.ColorIndex = 0
    ActiveCell.EntireRow.Interior.ColorIndex = 7
    ActiveCell.EntireColumn.Interior.ColorIndex = 7
End Sub

Denne kode har dog samme skavank som den foregående, nemlig at alle baggrundsfarver i hele arket slettes.

Hvis man vil undgå at bestående baggrundsfarver slettes, kan man i stedet bruge betinget formatering:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        .Worksheet.Cells.FormatConditions.Delete
        .FormatConditions.Add xlExpression, , "SAND"
        .FormatConditions(1).Interior.Color = vbRed
    End With
End Sub

Og her er der selvfølgelig også en skavank, nemlig at den vil slette al betinget formatering, der ellers findes i arket.

Som nævnt har jeg endnu ikke fundet en løsning, der løser alle disse udfordringer samtidigt, men hvis jeg gør, vil jeg opdatere denne artikel.