logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA Formatowanie warunkowe liczba między [jeżeli] jak to zapisać w VBA

andrusek1905 07 Mar 2018 11:25 2358 8
REKLAMA
  • #1 17086243
    andrusek1905
    Poziom 7  
    Posty: 6
    Witam,

    Prosiłby o pomoc jak zapisać w kodzie VBA, formatowanie warunkowe oparte na formule jeżeli i zmiennej gora.

    aby uzyskać taki efekt:
    VBA Formatowanie warunkowe liczba między [jeżeli] jak to zapisać w VBA

    Niestety wpisując tutaj coś takiego.

    With Selection
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, Formula1:="=JEŻELI(A1=1;" & gora &";0)" Formula2:=...
    .FormatConditions(2).Interior.Color = RGB(255, 255, 0)
    End With


    Mogę uzyskać jedynie taki efekt:

    VBA Formatowanie warunkowe liczba między [jeżeli] jak to zapisać w VBA

    I nie jest on zadowalający, bo funkcja jeżeli nie działa.

    Prosiłbym o pomoc, domyślam się, że będzie tu konieczne użycie funkcji IF jednak nie wiem jak to zapisać, aby funcja działała poprawnie.

    Z góry dziękuje za poświęcony czas.

    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 17086710
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Po pierwsze wyjaśnij, jaki dokładnie chcesz uzyskać efekt i załącz plik z przykładowymi danymi i oczekiwanym efektem. Czy "gora" jest zmienną zdefiniowaną w arkuszu, czy w VBA? Jeśli korzystasz z formuły formatowania warunkowego, to musi ona dać wynik PRAWDA lub FAŁSZ (ewentualnie równoważny wynik liczbowy). Formuła, którą próbujesz zastosować zwracałaby wartość zmiennej "gora", gdy komórka formatowana miałaby wartość 1, a chyba nie o to chodzi. Jeśli natomiast chcesz ustalić zmienne granice zadziałania formatowania, to nie jest jasne od czego te granice miałyby zależeć.
  • REKLAMA
  • #4 17088468
    andrusek1905
    Poziom 7  
    Posty: 6
    Maciej Gonet napisał:
    Po pierwsze wyjaśnij, jaki dokładnie chcesz uzyskać efekt i załącz plik z przykładowymi danymi i oczekiwanym efektem. Czy "gora" jest zmienną zdefiniowaną w arkuszu, czy w VBA? Jeśli korzystasz z formuły formatowania warunkowego, to musi ona dać wynik PRAWDA lub FAŁSZ (ewentualnie równoważny wynik liczbowy). Formuła, którą próbujesz zastosować zwracałaby wartość zmiennej "gora", gdy komórka formatowana miałaby wartość 1, a chyba nie o to chodzi. Jeśli natomiast chcesz ustalić zmienne granice zadziałania formatowania, to nie jest jasne od czego te granice miałyby zależeć.


    Niestety nie mogę zamieścić arkusza. Już odpowiadam na pytania:

    - Góra jest zmienną definiowaną w VBA.
    - Właśnie to jest celem zmienna góra ma być zwracana jeżeli wartość tej komórki jest równa 1. Idea jest taka, że gdy zmienię wartość tej komórki na 0 to formatowanie z żółtym wypełnieniem będzie nieaktywne dla tych zakresów.
    - Głównym problemem jest to, że chcę wpleść zmienną gora z vba do formatowania warunkowego i albo działa zmienna albo pojawia się niechciany znak " po znaku=, który powoduje bezużyteczność formuły.

    VBA Formatowanie warunkowe liczba między [jeżeli] jak to zapisać w VBA
  • #5 17088710
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    andrusek1905 napisał:
    Głównym problemem jest to

    że stosujesz niewłaściwy tryb formatowania warunkowego :!:

    Zarówno w kodzie VBA jak i w arkuszu winieneś zastosować tryb jak na zrzucie :idea:

    VBA Formatowanie warunkowe liczba między [jeżeli] jak to zapisać w VBA2018-03...png (17.44 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #6 17089006
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Bez przykładowego pliku bardzo trudno zrozumieć, o co Ci chodzi. Przecież ten plik może zawierać dowolne dane przykładowe, chodzi tylko o ideę i oczekiwany wynik. Nie wiemy jaki obszar ma podlegać formatowaniu. Nie rozumiem jaka jest rola tej zmiennej "góra" ?
    andrusek1905 napisał:
    zmienna góra ma być zwracana jeżeli wartość tej komórki jest równa 1. Idea jest taka, że gdy zmienię wartość tej komórki na 0 to formatowanie z żółtym wypełnieniem będzie nieaktywne dla tych zakresów.

    Formatowanie warunkowe nie zwraca żadnej wartości do zmiennej. Formatowanie może tylko zmienić sposób wyświetlania zawartości komórki. Co to jest "ta komórka"? Co to są "te zakresy"? Jeśli zmienna "góra" jest zmienną VBA, to jak to w ogóle ma działać? Chcesz redefiniować formatowanie warunkowe za każdym razem gdy jej wartość się zmieni? Formatowanie warunkowe jest funkcjonalnością arkusza, a nie VBA, zmienna z VBA dla formatowania warunkowego jest stałą. Można skojarzyć formułę formatowania warunkowego ze zmienną arkuszową i wtedy będzie to skojarzenie dynamiczne.
    Ogólnie niewiele rozumiem z tego, co piszesz, a szklanej kuli niestety nie mam.
  • REKLAMA
  • #7 17097420
    andrusek1905
    Poziom 7  
    Posty: 6
    Zmienna gora jest zmienną VBA, ale służy tylko do pobrania wartości z textboxu, przeliczenie jej i przekazanie do formatowania warunkowego. Na tym jej rola się kończy i nie ma potrzeby redefiniowania jej.

    Komórka A1 pełni rolę "włącznika" , czyli jak mamy w niej 1 to formatowanie działa, jeżeli zmienimy na 0 formatowanie obejmuje liczby od 0 do 0 ( i jest w hierarchi za formatowaniem zer na biało) czyli nie działa. Formatowanie będzie na wielu arkuszach, a zmiana z 1 na 0 spowoduje, że na wszystkich to formatowanie będzie "nieaktywne".

    W załączeniu plik ze schematem.
    Załączniki:
    • Zeszyt1.rar (19.44 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #8 17097558
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Brakowało znaków "=" przed JEŻELI. Niby drobiazg, ale istotny. Jak się widzi plik, to łatwiej się domyślić, o co chodzi. Sam opis to czasem za mało.
    Jeśli przy wyłączonym formatowaniu (A1=0) nie chcesz mieć sformatowanych pustych komórek, to zmień w formułach formatowania 0 na -1 (myślę, że nie będziesz miał nigdy wartości ujemnych).
    Załączniki:
    • TestFW.xls (46 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 17098020
    andrusek1905
    Poziom 7  
    Posty: 6
    Wielkie dzięki!

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukiwał pomocy w zakresie implementacji formatowania warunkowego w VBA, opartego na formule JEŻELI oraz zmiennej "góra". Celem było uzyskanie efektu, w którym formatowanie aktywuje się, gdy wartość w komórce A1 wynosi 1, a deaktywuje przy wartości 0. W odpowiedziach podano, że formuła musi zwracać wartość PRAWDA lub FAŁSZ, a także zasugerowano użycie formuły z typem xlExpression. Użytkownik wyjaśnił, że zmienna "góra" jest używana do pobierania wartości z textboxu i nie wymaga redefiniowania. Ostatecznie, wskazano na konieczność dodania znaków "=" przed formułą JEŻELI oraz zasugerowano zmianę wartości 0 na -1 w formułach formatowania, aby uniknąć formatowania pustych komórek.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA