Den villkorsstyrda formateringen kan ställas in felaktigt när du använder VBA i Excel

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

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 villkorsstyrd formateringsprogram.
  • Du använder relativa cellreferenser i VBA-programmet för villkorsstyrd formatering.
  • Du använder den villkorsstyrda formateringen på en annan cell än den markerade cellen.

När du använder den villkorsstyrda formateringen märker du att den villkorsstyrda formateringen inte är korrekt inställd.

Det här problemet uppstår till exempel 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 den villkorsstyrda formateringen på cell B1 när du anger "1" i cell A1. När du skriver "1" i cell A1 förväntar du dig att färgen i cell B1 ändras till röd. Färgen på cellen ändras däremot inte. Färgen i cell B1 ändras bara till röd om du anger "1" i cell B1.

I dialogrutan Villkorsstyrd formatering visas 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 när du vill referera till den cell som innehåller formeln i stället för att referera till relativa cellreferenser.

Du kan till exempel ändra textposten Formel1:="=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 den cell som du vill använda för villkorsstyrd formatering innan du använder formeln

När du vill använda villkorsstyrd formatering på en cell markerar du först den cell som du vill använda för den villkorsstyrda formateringen. 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 anvisningarna, efter vad som är lämpligt för den version av Excel som du kör.

Microsoft Office Excel 2007

  1. Starta Excel och öppna sedan ett nytt Excel-kalkylblad.
  2. Markera cell B1 i Excel-kalkylbladet.
  3. Klicka på fliken Start.
  4. Klicka på Villkorsstyrd formatering i gruppen Format och sedan på Ny regel.
  5. Klicka på Bestäm vilka celler som ska formateras genom att använda en formel 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 den villkorsstyrda formateringen.
  7. Ändra värdet i steg 6 till =$A$1=1.
  8. Klicka på Format.
  9. Klicka på fliken Fyllning i dialogrutan Formatera celler.
  10. Klicka på färgen "röd" och sedan på OK.
  11. Klicka OK i dialogrutan Ny formateringsregel.
  12. Skriv 1 i cell A1 och tryck sedan på RETUR.
  13. Kontrollera att färgen i cellen 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. Markera cell B1 i Excel-kalkylbladet.
  3. Klicka på Villkorsstyrd formatering på Format-menyn.
  4. Klicka på Formel finns i listan under Villkor 1.
  5. Klicka i rutan Datainmatning. Markera sedan den cell som du vill använda för den villkorsstyrda formateringen.
  6. Ändra värdet i datainmatningsrutan till =$A$1=1 och klicka sedan på OK.
  7. Klicka på Format.
  8. Klicka på fliken Mönster i dialogrutan Formatera celler.
  9. Välj färgen "röd" och klicka sedan på OK.
  10. Klicka på OK i dialogrutan Villkorsstyrd formatering.
  11. Skriv 1 i cell A1 och tryck sedan på RETUR.
  12. Kontrollera att färgen i cellen B1 har ändrats till röd.
  13. Stäng Excel-kalkylbladet.