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 Własna funkcja, excel nie przelicza po zmianie wartości.

kesudnik 14 Wrz 2018 07:51 2073 6
REKLAMA
  • #1 17439596
    kesudnik
    Poziom 2  
    Posty: 3
    Witam,


    Napisałem sobie funkcję w VBA wszystko działa jak powinno, ale żeby przeliczył muszę zaznaczyć pole z =funkcja() kliknąć na pasek i dać enter.

    Nie działa F9, w opcjach jest auto, CalculateFullRebuild itd.(najpierw radziłem się wujka google), jedyna opcja żeby zadziałało najechać na pasek i kliknąć enter.

    Czy jest jakiś myk, żeby przeliczał automatycznie za każdym razem kiedy zmienią się dane, w wybranych komórkach?


    Pozdrawiam
  • REKLAMA
  • #2 17439667
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    Poczytaj o zdarzeniu onchange.
  • REKLAMA
  • #3 17440112
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Trochę za mało informacji, nie wiadomo jak wygląda ta funkcja, jakie ma argumenty. Generalnie funkcje własne użytkownika nie są ulotne. Jeśli mają być, trzeba w treści na początku dopisać
    Kod: Text
    Zaloguj się, aby zobaczyć kod
    Funkcje nieulotne przeliczają się, gdy zmieni się wartość podana na liście argumentów, funkcje ulotne przy każdym przeliczeniu arkusza. W praktyce przeliczenie funkcji ulotnej wymusza klawisz F9, a nieulotnej kombinacja Ctrl+Alt+F9.
  • REKLAMA
  • #4 17446485
    kesudnik
    Poziom 2  
    Posty: 3
    Maciej Gonet napisał:
    Trochę za mało informacji, nie wiadomo jak wygląda ta funkcja, jakie ma argumenty. Generalnie funkcje własne użytkownika nie są ulotne. Jeśli mają być, trzeba w treści na początku dopisać
    Kod: Text
    Zaloguj się, aby zobaczyć kod
    Funkcje nieulotne przeliczają się, gdy zmieni się wartość podana na liście argumentów, funkcje ulotne przy każdym przeliczeniu arkusza. W praktyce przeliczenie funkcji ulotnej wymusza klawisz F9, a nieulotnej kombinacja Ctrl+Alt+F9.


    Po wpisaniu Application.Volatile działa F9 jak najadę na pole z funkcja ale wyrzuca mi ten sam wynik w każdej komórce, w której jest funkcja.

    Może funkcja ma być jakoś powiązana z komórką, w której jest?

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #5 17446580
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Cytat:
    i = ActiveCell.Row
    Aktywna komórka, to aktywna komórka...

    Cytat:
    If Cells(i, 3).Value = Worksheets("Dane").Cells(j, 1).Value Then Exit For

    Zamiast funkcji w VBA, oparłbym to o WYSZUKAJ.PIONOWO.
  • REKLAMA
  • Pomocny post
    #6 17446727
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Jeśli chcesz się odwoływać do komórki bieżącej, czyli tej, w której używasz funkcji, to zamiast ActiveCell powinieneś użyć ThisCell albo Caller:
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    ale rzeczywiście jak pisze adamas_nt, wygodniejsze w tym przypadku wydaje się być użycie standardowych funkcji.
  • #7 17446738
    kesudnik
    Poziom 2  
    Posty: 3
    Cytat:
    Zamiast funkcji w VBA, oparłbym to o WYSZUKAJ.PIONOWO.


    Dziękuję, już ogarnięte.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał problem z automatycznym przeliczaniem własnej funkcji w VBA w Excelu, która wymaga ręcznego odświeżania. Odpowiedzi sugerują użycie zdarzenia `OnChange` oraz dodanie `Application.Volatile` do funkcji, co umożliwia przeliczanie przy każdej zmianie danych. Wskazano również, że zamiast `ActiveCell`, lepiej użyć `ThisCell` lub `Caller`, aby odwołać się do bieżącej komórki. Alternatywnie, zaproponowano użycie funkcji `WYSZUKAJ.PIONOWO` jako prostszego rozwiązania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA