Formatowanie warunkowe może być niepoprawnie ustawione podczas korzystania z usługi VBA w programie Excel

Symptomy

Rozpatrzmy następujący scenariusz:

  • Zaznacz komórkę w arkuszu w programie Microsoft Excel 2000 lub nowszej wersji programu Excel.
  • Do utworzenia programu formatowania warunkowego opartego na formułach używasz programu Microsoft Visual Basic for Applications (VBA).
  • Odwołania do komórek względnych są używane w programie formatowania warunkowego VBA.
  • Formatowanie warunkowe jest stosowane do komórki innej niż zaznaczona komórka.

Po zastosowaniu formatowania warunkowego zauważysz, że formatowanie warunkowe nie jest poprawnie ustawione.

Na przykład ten problem występuje podczas korzystania z programu, który zawiera kod VBA w arkuszu programu Excel, który jest podobny do następującego kodu:

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

Ten kod automatycznie stosuje formatowanie warunkowe do komórki B1 po wprowadzeniu wartości "1" w komórce A1. Po wprowadzeniu wartości "1" w komórce A1 oczekujesz, że kolor komórki B1 zmieni się na czerwony. Jednak kolor komórki nie zmienia się. Kolor komórki B1 zmienia się na czerwony tylko wtedy, gdy wprowadzisz wartość "1" w komórce B1.

Ponadto w oknie dialogowym Formatowanie warunkowe jest wyświetlana formuła =B1=1 zamiast =A1=1.

Obejście problemu

W celu obejścia tego problemu należy skorzystać z jednej z następujących metod:

Metoda 1. Używanie bezwzględnych odwołań do komórek

Za pomocą odwołań do komórek bezwzględnych można odwoływać się do komórki zawierającej formułę, a nie odwoływać się do odwołań do względnych komórek.

Na przykład można zmodyfikować wpis tekstowy Formula1:="=A1=1" w kodzie VBA, który został opisany w sekcji "Objawy" jako Formuła1:="=$A$1=1", aby kod używał bezwzględnych odwołań do komórek. Ta zmodyfikowana wersja kodu VBA jest następująca:

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

Metoda 2. Przed zastosowaniem formuły wybierz komórkę, która ma być używana do formatowania warunkowego

Jeśli chcesz zastosować formatowanie warunkowe do komórki, najpierw wybierz komórkę, która ma być używana do formatowania warunkowego. Następnie wybierz komórkę, która ma być używana dla formuły. Po wybraniu tej komórki zmodyfikuj formułę zgodnie z wymaganiami.

W tym celu wykonaj następujące kroki, stosownie do wersji programu Excel, która jest uruchomiona.

Microsoft Office Excel 2007

  1. Uruchom program Excel, a następnie otwórz nowy arkusz programu Excel.
  2. W arkuszu programu Excel wybierz komórkę B1.
  3. Kliknij kartę Narzędzia główne.
  4. Kliknij pozycję Formatowanie warunkowe w grupie Style , a następnie kliknij pozycję Nowa reguła.
  5. Kliknij pozycję Użyj formuły, aby określić komórki do sformatowania w obszarze Wybierz typ reguły.
  6. Kliknij wewnątrz pola Formatuj wartości, w których ta formuła ma wartość true . Następnie wybierz komórkę, która ma być używana do formatowania warunkowego.
  7. Zmodyfikuj wartość w kroku 6 na =$A$1=1.
  8. Kliknij pozycję Format.
  9. W oknie dialogowym Formatowanie komórek kliknij kartę Wypełnij .
  10. Kliknij kolor "czerwony", a następnie kliknij przycisk OK.
  11. W oknie dialogowym Nowa reguła formatowania kliknij przycisk OK.
  12. W komórce A1 wpisz 1, a następnie naciśnij klawisz ENTER.
  13. Sprawdź, czy kolor komórki B1 został zmieniony na czerwony.
  14. Zamknij arkusz programu Excel.

Program Microsoft Office Excel 2003 i starsze wersje programu Excel

  1. Uruchom program Excel, a następnie otwórz nowy arkusz programu Excel.
  2. W arkuszu programu Excel wybierz komórkę B1.
  3. W menu Format kliknij pozycję Formatowanie warunkowe.
  4. W obszarze Warunek 1 kliknij pozycję Formuła jest na liście.
  5. Kliknij wewnątrz pola wprowadzania danych. Następnie wybierz komórkę, która ma być używana do formatowania warunkowego.
  6. Zmodyfikuj wartość w polu wpisu danych na =$A$1=1, a następnie kliknij przycisk OK.
  7. Kliknij pozycję Format.
  8. W oknie dialogowym Formatowanie komórek kliknij kartę Wzorce .
  9. Wybierz kolor "czerwony", a następnie kliknij przycisk OK.
  10. W oknie dialogowym Formatowanie warunkowe kliknij przycisk OK.
  11. W komórce A1 wpisz 1, a następnie naciśnij klawisz ENTER.
  12. Sprawdź, czy kolor komórki B1 został zmieniony na czerwony.
  13. Zamknij arkusz programu Excel.