Formatowanie warunkowe może zostać ustawione niepoprawnie podczas używania kodu VBA w programie Excel

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Symptomy

Rozważmy następujący scenariusz.

  • Zaznaczanie komórki w arkuszu programu Microsoft Excel 2000 lub nowszej wersji programu Excel.
  • Język Microsoft Visual Basic for Applications (VBA) umożliwia utworzenie opartego na formułach programu do formatowania warunkowego.
  • W programie do formatowania warunkowego VBA należy używać względnych odwołań do komórek.
  • Formatowanie warunkowe jest stosowane do komórki innej niż zaznaczona.

Po zastosowaniu formatowania warunkowego formatowanie warunkowe nie jest skonfigurowane poprawnie.

Ten problem występuje na przykład w przypadku korzystania z programu, który zawiera w arkuszu programu Excel kod VBA 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 liczby "1" w komórce A1. Po wprowadzeniu liczby "1" w komórce A1 należy oczekiwać, że kolor komórki B1 zmieni się na czerwony. Kolor komórki nie zmienia się jednak. Kolor komórki B1 zmieni się na czerwony tylko wtedy, gdy w komórce B1 zostanie wprowadzeniu liczby "1".

Ponadto w oknie dialogowym Formatowanie warunkowe jest wyświetlana formuła w następujący sposób: =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

Aby odwołać się do komórki zawierającej formułę, można użyć bezwzględnych odwołań do komórek, zamiast odwoływać się do względnych odwołań do komórek.

Można na przykład zmodyfikować wpis tekstowy Formuła1:="=A1=1" w kodzie VBA opisanym w sekcji "Objawy" jako Formuła1:="=$A$1=1", aby w kodzie zostały użycia 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 zaznacz komórkę, która ma być sformatowana warunkowo

Aby zastosować formatowanie warunkowe do komórki, najpierw zaznacz komórkę, której chcesz użyć w celu zastosowania formatowania warunkowego. Następnie zaznacz komórkę, której chcesz użyć dla formuły. Po zaznaczeniu tej komórki zmodyfikuj formułę, aby odpowiadała Twoim potrzebom.

W tym celu wykonaj poniższe czynności, odpowiednio do wersji programu Excel, która jest uruchomiona.

Program Microsoft Office Excel 2007

  1. Uruchom program Excel, a następnie otwórz nowy arkusz programu Excel.
  2. W arkuszu programu Excel zaznacz 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 do określenia komórek, które należy sformatować, w obszarze Wybierz typ reguły.
  6. Kliknij wewnątrz pola Formatuj wartości, dla których ta formuła jest prawdziwa. Następnie zaznacz komórkę, której chcesz użyć dla formatowania warunkowego.
  7. Zmodyfikuj wartość w kroku 6, aby =$A$1=1.
  8. Kliknij przycisk Formatuj.
  9. W oknie dialogowym Formatowanie komórek kliknij kartę Wypełnienie.
  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 zmienił się na czerwony.
  14. Zamknij arkusz programu Excel.

Microsoft Office Excel 2003 i wcześniejsze wersje programu Excel

  1. Uruchom program Excel, a następnie otwórz nowy arkusz programu Excel.
  2. W arkuszu programu Excel zaznacz komórkę B1.
  3. W menu Format kliknij polecenie Formatowanie warunkowe.
  4. W obszarze Warunek 1 kliknij pozycję Formuła znajduje się na liście.
  5. Kliknij wewnątrz pola wprowadzania danych. Następnie zaznacz komórkę, której chcesz użyć dla formatowania warunkowego.
  6. Zmodyfikuj wartość w polu wprowadzania danych tak, aby =$A$1=1, a następnie kliknij przycisk OK.
  7. Kliknij przycisk Formatuj.
  8. W oknie dialogowym Formatowanie komórek kliknij kartę Desenie.
  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 zmienił się na czerwony.
  13. Zamknij arkusz programu Excel.