Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: zdarzenia skoroszytu

poniedziałek, 08 sierpnia 2016

Jak wiadomo - makra i procedury Excela służą do automatyzacji działań, pobierania czy analizy danych. A ponieważ "apetyt rośnie w miarę jedzenia" zawsze pojawia się chęć, aby jeszcze bardziej zoptymalizować, zautomatyzować i uprościć. Może warto się zastanowić, czy da się to zrobić zupełnie bez udziału użytkownika? Tak, aby nawet nie trzeba było otwierać skoroszytu Excela?

Załóżmy, że mamy plik z procedurą np. pobierającą z internetu aktualną wartość kursu waluty i zapisującą ją w kolejnych wierszach arkusza Excela. Czy nie byłoby fajnie, gdyby takie pobieranie danych odbywało się w tle, codziennie o określonej porze?
Przyjmijmy na roboczo, że takie makro (choć to oczywiście tylko przykład, dotyczy to każdego makra) nazywa się Aktualizuj i znajduje się w pliku Excela KursWalut.xlsm. Chcąc, aby automatycznie uruchamiało się przy otwarciu skoroszytu, musimy je umieścić w module skoroszytu. W zależności od wersji językowej Excela - jest on oznaczony jako Ten_skoroszyt lub This_workbook.

Moduł skoroszytu 

Klikając w tym miejscu - przejdziemy do modułu skoroszytu. W tym module tworzymy makro Workbook_Open i wpisujemy nazwę makra, które ma się uruchomić przy otwarciu skoroszytu.

Moduł skoroszytu 

W tym przypadku do zdarzenia skoroszytu przy otwarciu - dopisane jest makro Aktualizuj, znajdujące się w module ogólnym.
Teraz wystarczy zapisać i zamknąć plik - przy każdym jego otwarciu uruchomione będzie makro Aktualizuj.

A na koniec - pozostaje tylko ustawienie terminu i częstotliwości, z jaką nasz skoroszyt powinien się otwierać. To już jednak nie w Excelu, a w harmonogramie zadań Windowsa. Uruchamiamy go z paska startowego Windowsa:

harmonogram zadań

Następnie tworzymy nowe zadanie:

harmonogram zadań

Następnie w zakładce Akcje wpisujemy nazwę pliku do otwarcia (po naciśnięciu przycisku Przeglądaj z prawej strony możemy oczywiście odszukać plik na dysku):

harmonogram zadań


harmonogram zadań

Kolejny krok to przejście do zakładki Wyzwalacze:

harmonogram zadań

Naciskamy przycisk Nowy i w kolejnym formularzu ustalamy termin i częstotliwość.
Potem wystarczy już tylko nacisnąć OK, choć oczywiście zawsze można przyjrzeć się wszystkim opcjom.

W zależności od wersji Windowsa - wygląd harmonogramu zadań może się różnić, choć zasada działania jest identyczna. Moje screeny pochodzą z Windows10.

 


Kurs Excel programowanie w VBA

poniedziałek, 14 lutego 2011

Formatowanie warunkowe jest jednym z ciekawszych narzędzi własnych Excela. Pisałam o tym tu:
Formatowanie warunkowe
Formatowanie warunkowe nieco bardziej zaawansowane
Przydaje się w praktycznym wykorzystaniu, gdy wyróżnienie okreśłonych danych może pomóc w analizie czy choćby uatrakcyjnić wygląd arkusza.
Problem pojawia się wtedy, gdy potrzebujemy więcej warunków formatowania niż ograniczona liczba dostępnych warunków systemowych. W takiej sytuacji możemy wykorzystać swoje własne formatowanie za pomocą kodu VBA.

Dobrym przykładem może być tu miesięczny grafik dyżurów dla 15 osób.

formatowanie arkusza Excel 

W legendzie - czyli komórkach F3 do G17 oznaczeniom L1 do L15 przypisujemy kolory wypełnienia komórki. Formatowanie to automatycznie przenosi się do samego grafika czyli komórek A1 do D32.

Zdefiniujmy najpierw konieczne funkcje i procedury


Public Function Kolorek(Symbol)

Dim Przeglad As Range 
For Each Przeglad In Range("F3:F20")
    If Przeglad.Value = Symbol Then
       Kolorek = Przeglad.Interior.Color
       Exit Function
    End If
Next
Kolorek = 0

End Function

Funkcja Kolorek wyszukuje Symbol (czyli wartość komórki będącej argumentem funkcji) w obszarze Range (w tym przypadku zdefiniowanej komórkami Legendy w arkuszu Excela). Obszar jest przeszukiwany w ramach pętli For Each...Next (zob. Pętla For Each ... Next) i gdy wynik poszukiwania jest pozytywny - funkcja Kolorek przyjmuje wartość numeru koloru tła.

Kolor mamy ustalony, potrzebna jest jeszcze procedura zmieniająca kolory w samym arkuszu.


Public Sub Pokoloruj()

Dim JakiKolor
Dim Komorka As Range
Dim JakiSymbol
 For Each Komorka In Range("B2:F40")
       JakiSymbol = Komorka.Value
       If JakiSymbol <> "" Then
              JakiKolor = Kolorek(JakiSymbol)
              If JakiKolor = 0 Then Komorka.Interior.Pattern = xlNone Else Komorka.Interior.Color = JakiKolor
             
        Else
         Komorka.Interior.Pattern = xlNone
        End If
 Next
 End Sub

Procedura Pokoloruj przechodząc przez poszczególne komórki grafika (czyli zakres B2 do F40), na podstawie ich wartości przypisanej do zmiennej Symbol w fukcji Kolorek, sprawdza i zmienia kolor komórek w grafiku.

Teraz wystarczy tylko stworzyć przycisk uruchamiający makro Pokoloruj. Prosciej jednak byłoby przypisać je do któregoś ze zdarzeń arkusza lub zdarzeń skoroszytu.  
Na przykład tak:

Private Sub Worksheet_Activate()
Pokoloruj
End Sub

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column < 8 And Target.Row < 33 Then Pokoloruj

End Sub

Makro działa w tym przypadku przy otwarciu arkusza oraz przy zmianie wartości komórek z określonego zakresu.  

wtorek, 19 października 2010

W poprzedniej notce opisałam działanie makra Workbook_Open:
VBA: Workbook_Open
Jest to chyba najczęściej wykorzystywane makro związane ze zdarzeniami skoroszytu. Oczywiscie tych makr jest znacznie więcej. Pełną ich listę możemy sprawdzić  w oknie edytora VBA

zdarzenia skoroszytu 

Warto tu wspomnieć o kilku, mających praktyczne znaczenie. Workbook_Activate - działa przy aktywacji 
Workbook_BeforeClose - przed zamknięciem skoroszytu.
Workbook_BeforePrint - przed drukowaniem
Workbook_BeforeSave - przed zapisaniem 

A jako lekturę uzupełniającą - notki z tagiem makro.

środa, 13 października 2010

Workbook_Open to nazwa makra odwołującego się do zdarzenia skoroszytu. Działa automatycznie przy otwarciu pliku.
Może być tam bezpośrednio wpisany ciąg instrukcji do wykonania, a może być odwołanie do innego makra.
Jeżeli dany skoroszyt zawiera to makro - przy jego otwarciu najpierw musi być wykonany ciąg instrukcji w nim zawarty, a dopiero potem - arkusz będzie dostępny. Oczywiście, warunkiem podstawowym jest otwarcie skoroszytu z uruchomieniem makr.
Jeżeli chcemy otworzyć skoroszyt z pominięciem makra otwarcia - podczas jego otwierania przytrzymajmy klawisz Shift.

A jako lekturę uzupełniającą - proponuję notkę i z tagiem makro

A może coś z literatury informatycznej zwiazanej z VBA?

  

wtorek, 12 października 2010

Człowiek ze swojej natury jest leniwy. Na szczęście - inaczej koło byłoby do dziś nieznanym wynalazkiem. Idąc tym tropem - spróbujmy zautomatyzować skoroszyt Excela. O tym, jak dopisać makro do przycisku - pisałam tu:
Przycisk makra
Teraz pora zastanowić się nad przypisaniem makra do typowych zdarzeń skoroszytu czy arkusza.

W oknie projektu VBA sprawdzamy jakie mamy możliwości. Wybierając po lewej stronie skoroszyt (ThisWorkbook):

zdarzenia skoroszytu

W oknie po prawej stronie - możemy wybrać zdarzenie związane z skoroszytem:

zdarzenia skoroszytu

(kliknij na rysunek, aby go powiększyć) 

W analogiczny sposób możemy sprawdzić zdarzenia związane z arkuszem:

zdarzenia arkusza

W tym przypadku - zaznaczając Arkusz1 - wybieramy zdarzenia właśnie z nim związane. Jeżeli chcemy oprogramować inny arkusz - musimy go wybrać w oknie projektu. Lista dostępnych możliwości wygląda tak:

zdarzenia arkusza

 (kliknij na rysunek, aby go powiększyć)

O najbardziej typowych zdarzeniach napisze w kolejnych notkach. A o samych makrach - pod tagiem makro.

 

| < Lipiec 2017 > |
Pn Wt Śr Cz Pt So N
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!