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.

[Excel VBA] cztery proste pytania

Korek_123 01 Paź 2015 21:04 708 3
  • #1 01 Paź 2015 21:04
    Korek_123
    Poziom 11  

    Witam,

    Uprzejma prośba o pomoc / podpowiedź / wyjaśnienie (na wstępie nie jestem programistą …. niestety!).


    1. Formatowanie kilku zakresów jednocześnie.

    Chce nadać (za pomocą makra w VBA Excel) kilku zakresom danych ten sam format.

    Zakresy tu np:
    (B15:B38)
    (B51:C62)
    (B98:D112)

    Format to:
    ###,00;[Czerwony] - ###,00;-
    Bez tła (przeźroczyste tło)
    Bez obramowania
    Font 9, Calibri, czarny
    Wyrównanie do prawej poziomo i środka pionowo.

    Format nie jest problemem (tak mi się wydaje) – problemem jest zaznaczenie kilku zakresów równocześnie aby nie kopiować polecenie „With Selection … ”.

    To pewnie trywialne – ale bardzo proszę o podpowiedź.


    2.Wyszukanie nagłówka kolumny z nazwą zaczynająca się od „Q”.

    Mam zakres kolumn do przeszukanie „A4:AZ4”, w tym zakresie są nagłówki kolumn.

    Jak w tym zakresie za pomocą funkcji „.find” (w makro VBA Excel) znaleźć ostatnią kolumnę, której nazwa zaczyna się od „Q” i ma najwyższy numer (numery dla kolumn, których nazwa zaczyna się od Q zmieniają się od 1 do 4), druga najwyższą , trzecią od końca i czwartą od końca (i w zależności od „roku”)?

    Kolumny mają np. nazwy Q1.2013, Q2.2014, Q3.2013, Q4.2013 Q1.2013, Q2.2014, Q3.2014, Q4.2014, Q1.2015, Q2.2015, Q3.2015) – (kolumny od lewej do prawej są w porządku narastającym).

    Chodzi o wyszukanie np. kolumn oznaczonych kolejno jako: Q4.2014, Q1.2015, Q2.2015, Q3.2015.

    Układ nazw wszystkich kolumn jest nieco bardziej skomplikowany, jest np. taki 07.2014, 08.2014, 09.2014, Q3.2014, 10.2014, 11.2014, 12.2014, Q4.2014, 01.2015, 02.2015, 03.2015, Q3.2015, 04.2015, 05.2015, 06.2015, Q2.2015, 07.2015, 08.2015.09.2015, Q3.2015, 10.2015 (między kwartałami są miesiące).

    Aby dodatkowo wyjaśnić kolumna oznaczona jako np. 03.2015 oraz Q3.2015 – to nie zawsze są te same dane (nie wiem dlaczego – takie dane dostaje), dlatego chodzi mi o wyszukanie konkretnej kolumny (kwartalnej albo miesięcznej).

    A na marginesie jak wyszukać np. wszystkie kolumny miesięcy zaczynające się od „03” ale tylko dla czterech ostatnich lat, przyjmując że 2008 jest pierwszym rokiem, a 2015 ostatnim.


    3.Zapisywanie nazwy pliku z „elementem” z komórki w arkuszu.

    Zakładając że w arkuszu w komórce „B2” znajduje się nazwa jednostki organizacyjnej danej firmy.

    Nie wiem jak powinno wyglądać makro, które po naciśnięciu przycisku zapisze (w wybranym przez usera katalogu) plik pod nazwą (zakładając że B2 jest nazwa „01_Czarny_Las”) to „01_Czarny_Las__01_10_2015.xls” gdzie „01_10_2015” to data zapisania pliku w formacie dd_mm_yyyy – (może jeszcze godzina „__hh_mm”).

    Bardzo proszę o pomoc w napisaniu takiego makra.


    4. Czym zastąpić w VBA Excel funkcję Application.Match – pytam bo ta funkcja nie wyszukuje kolumn, w których w nazwach jest datą zapisana w formacie daty np.”2015-09-27” (yyyy-mm-dd) – funkcja wyszukuje kolumny tylko jak jest wcześniej zapis poprzedzony „ ‘ „ – czyli zapis tekstowy (albo ja coś źle ronię).


    Bardzo uprzejmie proszę o pomoc / podpowiedź / wyjaśnienia.
    Pozdrawiam,

    0 3
  • #2 02 Paź 2015 08:32
    Zbych034
    Poziom 37  

    Pytanie 1 najlepiej zarejestrować makro a następnie je dostosować do swoich potrzeb.

    0
  • Pomocny post
    #3 02 Paź 2015 09:33
    cbrman
    Poziom 27  

    Ad 3. Mniej więcej taki kod:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Poczytaj jeszcze o atrybutach właściwości FileFormat, ja ustawiłem typ pliku jako "xlsm".

    Ad4. Data to odpowiednio sformatowana liczba całkowita i to należy uwzględnić:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #4 02 Paź 2015 21:09
    Korek_123
    Poziom 11  

    Witam,

    @cbrman - Wielkie dzięki za pomoc ;-)

    Ad.1. Okazalo się trywialne proste, tyle że zakres trzeba zapisać innaczej niż w zwykłych formułach (znaki cudzusłowa trzeba umieścić na początku i na końcu zakresu), czyli:

    Range("B15:B38, B51:C62, B98:D112").Select



    Ad. 2. jest nadal porblemem :-(

    Jak w szukanym zakresie w VBA Excel znależć (za pomocą funkcji .Find):

    - trzy kolejne (wcześniejsze) nagłówki kwartałów np gdy podany - czwarty to Q2 2015 - a trzeba znaleźć jeszcze Q1 2015, Q4 2014 i Q3 2014.

    - jak w szukanym zakresie znaleźć np. cztery ostatnie daty zaczynające się od "07." gdy podana jest 07.2015 - chodzi o automatyczne "doszukanie" jeszcze 07.2014, 07.2013 i 07.2012 .

    Wielka prośba o podpowiedź

    0