logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Excel VBA] Formatowanie wielu zakresów jednocześnie w Excel VBA - jak to zrobić?

Korek_123 01 Paź 2015 21:04 1263 3
REKLAMA
  • #1 15035752
    Korek_123
    Poziom 11  
    Posty: 133
    Ocena: 10
    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,
  • REKLAMA
  • #2 15036388
    Zbych034
    Poziom 39  
    Posty: 4705
    Pomógł: 550
    Ocena: 1419
    Pytanie 1 najlepiej zarejestrować makro a następnie je dostosować do swoich potrzeb.
  • REKLAMA
  • Pomocny post
    #3 15036487
    cbrman
    Poziom 27  
    Posty: 441
    Pomógł: 177
    Ocena: 61
    Ad 3. Mniej więcej taki kod:
    Kod: VB.net
    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: VB.net
    Zaloguj się, aby zobaczyć kod
  • #4 15037951
    Korek_123
    Poziom 11  
    Posty: 133
    Ocena: 10
    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ź
REKLAMA