Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

OpenOffice, Excel - formuła tablicowa przy wykorzystaniu makra (VBA)

maciejchroma 13 Cze 2013 17:57 1884 5
  • #1 13 Cze 2013 17:57
    maciejchroma
    Poziom 2  

    Witam
    Od jakiegoś czasu nie mogę poradzić sobie z funkcją tablicową (nawiasy klamrowe { } ) wywoływaną za pomocą makra.
    Na początek krótki opis co, jak i dlaczego.
    Pierwsza sprawa to arkusz kosztowy (AK) do którego wpisywany jest czas pracy dla konkretnego zlecenia i grupy kosztowej. Druga to arkusz rozliczeniowy (AR) zlecenia do którego importowane są koszty. Wygląda to tak, że funkcja sprawdza w AR jaki jest podany numer zlecenia --> odwołuje się do AK szuka wszystkich odwołań do danego numeru --> następnie szuka konkretnej grupy kosztowej --> sumuje wszystko i wyświetla końcowy wynik w konkretnej komórce AR.
    Do przeprowadzenia powyższego konieczne jest zastosowanie formuły tablicowej inaczej nazywanej macierzowej lub klamrowej { }.
    Zbliżam się do sedna - wszystko działa fajnie ale niestety strasznie wolno trwa załadowanie danych i opcja ustawienia funkcji na stałe w komórkach nie jest możliwa.
    Pomyślałem, że zrobię makro ale niestety nie mogę uzyskać funkcji macierzowej.

    Wszystko powyższe nie ma znaczenia i to pytanie mogło paść na samym początku: Jak uzyskać funkcję macierzową (CTRL+SHIFT+ENTER) za pomocą makra?

    Z góry dziękuję za wskazówki i pomoc, Maciej.

    0 5
  • #2 18 Cze 2013 17:09
    maciejchroma
    Poziom 2  

    Brak odpowiedzi może sugerować problem na tyle łatwy do rozwiązania, że nie warto nawet pisać. To mnie przeraża :-)
    HELP!!!

    0
  • #3 18 Cze 2013 17:54
    adamas_nt
    Moderator Programowanie

    Bez przesady. Pierwszy, lepszy Link z googla.

    W Excelu podobnie: Range().FormulaArray = formuła as string

    0
  • #4 19 Cze 2013 17:25
    maciejchroma
    Poziom 2  

    Dziękuję bardzo za pomoc.
    Załączony link rozwiązuje problem ale nie wiem dlaczego po wykonaniu makra w komórce wyświetla się błąd #NAZWA?
    Po wejściu w funkcję i zaakceptowaniu klawiszem OK wszystko działa prawidłowo.
    Można temu jakoś zaradzić?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 22 Kwi 2014 17:03
    noonka
    Poziom 8  

    witam,
    jestem bardzo początkującym "programistą" i nie bardzo rozumiem rozwiązania przedstawionego w tym wątku, a również mam problem z funkcją tablicową.
    Mój kod działa w pętli i to na kilku różnych arkuszach.
    Nagrany kod wyglada tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    przy czym formuła tablicowa i w tym przypadku generuje błąd.
    a moja wersja:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    koniec to numer ostatniego pełnego wiersza, kolumna- nr kolumny a arkusz jest przypisywany z inputboxa
    błąd jaki wyskakuje:
    -w pierwszym przypadku: Ustawienie właściwości FormulaArray klasy Range nie jest możliwe;
    - w moim kodzie: Application-defined or object-defined error.
    bardzo proszę o pomoc albo jakakolwiek wskazówkę, która pozwoli mi to jakoś "obejść".
    Opcja ze zmianą formuły na string'a tez nie pomogła (chociaż nie twierdzę, że zrobiłam wszystko poprawnie)
    Pozdrawiam:)

    0
  • #6 23 Kwi 2014 01:17
    Maciej Gonet
    Poziom 31  

    Szkoda, że nie ma przykładowego pliku, bo tak to można tylko się domyślać. W pierwszym przypadku podejrzewam, że przyczyna błędu leży w długości formuły tablicowej, która przekracza 255 znaków. Próbowałem w swoim komputerze podobny kod i jak się go trochę skróci, działa poprawnie. W drugim kodzie pod koniec wiersza jest podwójny cudzysłów, który jest elementem łańcucha w cudzysłowie. W takim przypadku znaki cudzysłowu muszą być podwojone. Ten zapis, który jest, zostałby zinterpretowany jako pojedynczy cudzysłów, a więc generowałby błąd. Trzeba też sprawdzić długość formuły, a w ogóle to unikać takich długich formuł, bo trudno je analizować i szukać błędów.
    Pozdrowienia.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo