Villkorsstyrd formatering kan anges felaktigt när du använder VBA i Excel

Symptom

Tänk dig följande scenario:

  • Du markerar en cell i ett kalkylblad i Microsoft Excel 2000 eller i en senare version av Excel.
  • Du använder Microsoft Visual Basic for Applications (VBA) för att skapa ett formelbaserat program för villkorsstyrd formatering.
  • Du använder relativa cellreferenser i programmet för villkorsstyrd VBA-formatering.
  • Du tillämpar villkorsstyrd formatering på en annan cell än den markerade cellen.

När du använder villkorsstyrd formatering ser du att den villkorsstyrda formateringen inte är korrekt inställd.

Du kan till exempel uppleva det här problemet när du använder ett program som innehåller VBA-kod i ett Excel-kalkylblad som liknar följande kod:

Sub Example()
ThisWorkbook.Worksheets(1).Range("A1").Select
With ThisWorkbook.Worksheets(1).Range("B1")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=A1=1"
.FormatConditions(1).Interior.ColorIndex = 46
End With
End Sub

Den här koden tillämpar automatiskt villkorsstyrd formatering på cell B1 när du anger "1" i cell A1. När du anger "1" i cell A1 förväntar du dig att färgen på cell B1 ändras till röd. Cellens färg ändras dock inte. Färgen på cell B1 ändras till röd endast om du anger "1" i cell B1.

Dialogrutan Villkorsstyrd formatering visar dessutom formeln som =B1=1 i stället för =A1=1.

Lösning

Använd en av följande metoder för att lösa problemet.

Metod 1: Använd absoluta cellreferenser

Du kan använda absoluta cellreferenser för att referera till cellen som innehåller formeln i stället för att referera till relativa cellreferenser.

Du kan till exempel ändra textposten Formula1:="=A1=1" i VBA-koden som beskrivs i avsnittet "Symptom" som Formel1:="=$A$1=1" så att koden använder absoluta cellreferenser. Den här ändrade versionen av VBA-koden är följande:

Sub Example()

ThisWorkbook.Worksheets(1).Range("A1").Select

With ThisWorkbook.Worksheets(1).Range("B1")
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, Formula1:="=$A$1=1"
     .FormatConditions(1).Interior.ColorIndex = 46
End With

End Sub

Metod 2: Markera cellen som du vill använda för villkorsstyrd formatering innan du tillämpar formeln

När du vill använda villkorsstyrd formatering för en cell markerar du först den cell som du vill använda för villkorsstyrd formatering. Markera sedan den cell som du vill använda för formeln. När du har valt den här cellen ändrar du formeln så att den passar dina behov.

Det gör du genom att följa de här stegen, beroende på vilken version av Excel du kör.

Microsoft Office Excel 2007

  1. Starta Excel och öppna sedan ett nytt Excel-kalkylblad.
  2. I Excel-kalkylbladet väljer du cell B1.
  3. Klicka på fliken Start .
  4. Klicka på Villkorsstyrd formatering i gruppen Formatmallar och klicka sedan på Ny regel.
  5. Klicka på Använd en formel för att avgöra vilka celler som ska formateras under Välj en regeltyp.
  6. Klicka i rutan Formatera värden där den här formeln är sann . Markera sedan den cell som du vill använda för villkorsstyrd formatering.
  7. Ändra värdet i steg 6 till =$A$1=1.
  8. Klicka på Format.
  9. I dialogrutan Formatera celler klickar du på fliken Fyllning .
  10. Klicka på färgen "röd" och klicka sedan på OK.
  11. I dialogrutan Ny formateringsregel klickar du på OK.
  12. Skriv 1 i cell A1 och tryck sedan på RETUR.
  13. Kontrollera att färgen på cell B1 har ändrats till röd.
  14. Stäng Excel-kalkylbladet.

Microsoft Office Excel 2003 och tidigare versioner av Excel

  1. Starta Excel och öppna sedan ett nytt Excel-kalkylblad.
  2. I Excel-kalkylbladet väljer du cell B1.
  3. Klicka på Villkorsstyrdformatering på formateringsmenyn.
  4. Under Villkor 1 klickar du på Formel finns i listan.
  5. Klicka i rutan datainmatning. Markera sedan den cell som du vill använda för villkorsstyrd formatering.
  6. Ändra värdet i datainmatningsrutan till =$A$1=1 och klicka sedan på OK.
  7. Klicka på Format.
  8. I dialogrutan Formatera celler klickar du på fliken Mönster .
  9. Välj färgen "röd" och klicka sedan på OK.
  10. I dialogrutan Villkorsstyrd formatering klickar du på OK.
  11. Skriv 1 i cell A1 och tryck sedan på RETUR.
  12. Kontrollera att färgen på cell B1 har ändrats till röd.
  13. Stäng Excel-kalkylbladet.