Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA - Dluga funkcja wprowadzona do makra

szarlich 14 Lis 2013 14:41 1311 3
  • #1 14 Lis 2013 14:41
    szarlich
    Poziom 7  

    Witam,
    napisałem bardzo długie funkcje które następnie postanowiłem wpisać do makra.
    W vba nie można gnieździć funkcji wiecej niz 7 razy jak i długosc zmiennej moze wynosic tylko 255 znakow wiec dziele je na kawałki by później zlepić w jedno.

    Funkcja robi bardzo prostą rzecz: dodaje odpowiednie komórki z tablic w arkuszach jeśli w rzedzie 2 i kolumnie B jest ta sama wartość co w arkuszu nad którym pracujemy. Nazwy arkuszy różnia sie numerem i ten numer wziałem za cel w pisaniu funkcji i odróżnianiu arkuszy od siebie (zmienna numer_sheet: funkcje typu, right,len,left,find,clean itp). Np. jesli mamy arkusz zbiorczy 3 to dodane zostaną dane z arkuszy 1,2,3. Wielkosc tablic jest zmienna miedzy arkuszami jak i sortowana, funkcje wylapuja te dane na ktorych mi zalezy przez co formuły są dlugie jak spaghetti.

    kod samej funkcji skracam z uwagi na jej dlugość

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    1. Poniewaz ilosc zmiennych jest dosc duza i roznia sie tylko wartoscią odejmowaną od numeru arkusza to czy mozna to zapetlić tak by petla konczyla sie gdy (name_sheet - liczba) = 1. I pozniej to ladnie podstawialo do wzoru sumy?

    2. Jak zapisac zmienną w ktorej jest funkcja np. Dim numer_sheet as ?

    Moj VBA jest podstawowy copy paste i selecty to puki co wszystko na co mnie stać.

    0 3
  • #2 14 Lis 2013 16:02
    marcinj12
    Poziom 40  

    Jeśli dobrze zrozumiałem, chcesz zsumować wartość z jakiejś komórki ze wszystkich arkuszy, które zawierają w nazwie numer mniejszy lub równy arkuszowi, z którego odpalasz makro?
    Jeśli tak, to w skrócie można to zrobić tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 14 Lis 2013 16:36
    szarlich
    Poziom 7  

    Dobrze zrozumiales tylko nie z jakiejs komórki podanej odgórnie a spelniajacej parametry w stylu: jezeli j2 arkusza zbiorczego istnieje w rzedzie 2 arkusza2 i b3 istnieje w kolumnie b arkusza2 to wspolrzedne spotkania sie tych punktow daja wspolrzedne komorki w arkuszu2 i taka dana jest kopiowana do akrusza zbiorczego. Cos jak celowanie w komórke, najpierw wiersz potem kolumna jesli sie zgadza to dodaj wartosc. W sumie makro dziala liczy ze 20 sekund i daje wynik dla calej tablicy, z czystej ciekawoci teraz pytam czy mozna petle zastosowac.

    arkusze nazywaja sie AP1, AP2,AP3 arkusz zbiorczy ma 20-21 znakow i numer na koncu

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #4 14 Lis 2013 17:11
    cbrman
    Poziom 27  

    Załącz przykładowy plik, to łatwiej będzie spróbować opracować jakieś rozwiązanie.

    0
  Szukaj w 5mln produktów