Witam!
problem jest następujący.
Stworzyłem sobie funkcję podobną do SUMY.POŚREDNIE(109,..) z tym, ze
uwzględnia ukryte kolumny (a nie tylko wiersze jak SUMY.POŚREDNIE) i sumuje
wartości tylko z widocznych komórek.
Mechanim funkcji jest bardzo siermiężny: można podać tylko adresy
pojedyńczych komórek (baz zakresów) a sam silnik składa sie z wielu linijek
If a3.EntireColumn.Hidden = False Then c = c + a3
a3 to jeden z argumentów funkcji
c to zmienna przechowująca wynik funkcji
I tu pytania:
1. Załóżmy, że kolejne argumenty funkcji można sprawdzać za pomoca pętli FOR
EACH a(n) IN... Czy argumenty funkcji tworzą jakąś grupę obiektów na której
można wykonać taką operację?
2. Jak wymusić przeliczenie arkusza po odkryciu/ukryciu komórek będących
argumentami funkcji? Od razu powiem, że kod np.
Me.UsedRange.Columns("HL:HM").Calculate
czy krócej
Columns("HL:HM").Calculate
umieszczony w arkuszu pod zdarzeniem worksheet_change nie działa (w
kolumnach HL i HM są wpisane moje funkcje).
Makro jest OK, ale te komórki i tak się nie przeliczają
Jak zapewne nie wszyscy wiedzą, Excel przelicza tylko te komórki w których
dokonano zmian lub których wynik może ulec zmianie w wyniku wprowadzenia
zmian do innych komórek (poprzedniczek). Trochę zagmatywałem ;-) Inaczej
mówiąć: jeżeli w komórce A1 masz formułę " =A2+A3 " i nie wprowadzałeś
żadnych zmian do komórek A1, A2 ani A3 to możesz sobie wciskać F9 do woli,
pisać Calculate w VBA itp a komórka A1 i tak nie będzie uwzględniona w
przeliczaniu.
Ma to przyspieszyć wykonywanie obliczeń przez program, Jednak w przypadku
mojej funkcji notuję dzięki temu pełną porażkę. W moim arkuszu nie zmienia
się zawartość komórki zawierającej funkcję, ani komórek poprzedniczek, Są
one jedynie odkrywane albo ukrywane. I ma to mieć wpływ na wynik funkcji.
Jak więc zmusić arkusz do przeliczenia tych komórek? POMOCY!
emel