Archive for March, 2012

Excel - Przycisk do uruchamiania makra - inne podejście

Thursday, March 29th, 2012

W artykule Dodawanie przycisku do uruchamiania makra w Excelu 2003 opisałem metodę przypisania przycisku (takiego jak w większości aplikacji windows) do uruchomienia makra czyli tego typu

button.png

Można jednak utworzyć dużo prościej taki przycisk w oparciu o dowolny element graficzny w excelu jak pokazane jest niżej

przycisk_do_makra1.png

Wybieramy kształt (ja wybrałem prostokąt i prostokąt z zaokrąglonymi rogami , ale można nawet te najbardziej udziwnione - jak chmurki czy gwiazdki)

przycisk_do_makra2.png

Przypisujemy makro (ja miałem napisane jedno dla przykładu)

przycisk_do_makra3.png

Pomijam oczywiście etap tworzenia makra, gdyż był on omawiany wielokrotnie w poprzednich wpisach
Zaletą tego rozwiązania jest większa estetyka i większa dowolność formatowania kształtu i koloru tła przycisku
O ile w zwykłych “windowsowych” przyciskach nie można było zmienić koloru tła a jedynie tekstu o tyle tutaj jest wielkie pole do popisu i przede wszystkim jest to rozwiązanie o wiele szybsze i bardziej intuicyjne w realizacji.

Polecam spróbować.

Książka, która może pomóc w lepszym zrozumieniu tego tematu:

Pobierz fragment

Deepburner - nagrywanie obrazu ISO

Friday, March 23rd, 2012

Nagrywanie obrazów ISO w DeepBurnerze 1.8

Jeżeli dysponujemy plikiem ISO do nagrania na płytę to nagrywanie w Deepburner wygląda następująco:

Uruchamiamy program DeepBurner
deepburner_iso_1.png

Następnie wybieramy Burn ISO image i klikamy dalej

Widząc okno jak niżej na rysunku klikamy w przycisk z trzema kropkami zaznaczony czerwonym kwadratem jak niżej i wybieramy obraz który chcemy nagrać na płytę.

deepburner_iso_2.png

po wybraniu pliku obrazu klikamy Open

deepburner_iso_2a.png

Teraz gdy wszystko gotowe klikamy w przycisk: Nagraj obraz ISO

deepburner_iso_3.png

Nagranie obrazu potrwa chwilkę…

Wynikiem będzie nagranie tego co zawiera treść pliku obrazu a więc na płycie pojawią się katalogi i pliki zawarte w obrazie. Po tym poznać że obraz płyty nagrał się prawidłowo.

Istnieje oczywiście możliwość nagrania obrazu jako pliku z rozszerzeniem ISO na CD lub DVD (co będzie też widoczne po odtworzeniu płyty) ale nie o to przecież chodzi.

Excel i VBA tworzenie arkuszy w skoroszycie i ich automatyczne nazywanie

Saturday, March 10th, 2012

Skoroszyt Excela po otwarciu ma zwykle dostępne 3 arkusze. Liczbę tę możemy zmieniać przez tworzenie nowych lub usuwanie istniejących.

newsheets1.png

Aby zmienić domyślną ilość arkuszy po uruchomieniu Excela należy ustawić odpowiednią opcję w menu Narzędzia -> Opcje lub użyć odpowiedniego polecenia w języku VBA

Ustalanie domyślnej liczby arkuszy za pomocą menu

W Excelu 97 - 2003

chnsheets_exc2000.png

W Excelu 2010 (prawdopodobnie także w wersji 2007)

chnsheets1.png

chnsheets2.png

Taka zmiana pociąga za sobą konsekwencje że wszystkie nowo utworzone skoroszyty będą mieć tyle arkuszy ile ustawimy w menu aż dokonamy ponownie zmiany. Czasem jest potrzeba aby tylko jeden nowy skoroszyt miał nietypową ilość arkuszy. Jeśli jest to różnica rzędu 1-2 arkuszy to szkoda pisać w tym celu makro ale jeśli chcemy utworzyć dla odmiany skoroszyt o liczbie arkuszy o 20 większej niż normalnie to warto napisać takie makro tym bardziej że zajmie to jedynie 3 może 4 linijki kodu.

Dostęp do pełnej treści artykułu wymaga zapisania się na listę adresową (zapisanie na listę jest bezpłatne)

Chcę mieć dostęp

Excel i VBA procedury Sub z argumentami opcjonalnymi

Thursday, March 1st, 2012

Niedawno napisałem o tworzeniu procedur z parametrami.
Samo w sobie jest to ciekawe i daje duże możliwości, zwłaszcza jeśli piszemy kod, w którym niektóre grupy poleceń często się powtarzają. Wyższość procedur z parametrami nad tymi bez polega na tym że:
- może wykonywać różne zadania w zależności od argumentów, co w przypadku zwykłej procedury jest trudne - musiałaby się odnosić do zawartości określonych komórek arkusza
- jest bardziej zwięzła i w większości przypadków szybsza w stosunku do procedury bezargumentowej
- da się ją wywoływać kaskadowo (można ją łatwiej zagnieździć bo jest niezależna od miejsca w którym została wywołana)

Dobrze, ale jak się mają zalety stosowania argumentów opcjonalnych w stosunku do normalnie deklarowanych argumentów.
- argumenty opcjonalne nie muszą być podawane
- obecność argumentów opcjonalnych nie zmusza nas do pisania kilku odrębnych procedur dla różnych zestawów argumentów
A teraz konsekwencje:
- w deklaracji takiej procedury argumenty nieopcjonalne jeśli występują to muszą być deklarowane w pierwszej kolejności
jeśli procedura zawiera więcej niż jeden argument, to wywołując ją argumenty rozdzielamy przecinkami, nawet jeśli ich wartości są pomijane, na przykład jeśli mamy procedurę z 5 argumentami z czego 2 są opcjonalne to piszemy tak:
Call procedurka(42, 3, 4, , )
Ułatwieniem jest podpowiedź interpretera VBA w trakcie wywoływania procedury

autopodpowiedz.png

W miejsce argumentów opcjonalnych zostaną wstawione wartości domyślne jeśli zadeklarujemy je w procedurze, jeśli ich nie zadeklarujemy to wstawione zostaną zera.
Deklaracja wartości domyślnej została pokazana poniżej. Przykładowej zmiennej velocity została domyślnie nadana wartość 50 jeśli argument jest jedynym argumentem i na dodatek opcjonalnym to taką procedurę można wywołać podając samą jej nazwę niezapominając jednak o poprzedzającym słowie Call

Sub mojaproc1(Optional velocity As Byte = 50)
MsgBox “Twoja prędkość: ” & velocity
End Sub

Sub wywolaj()
Call mojaproc1
Call mojaproc1(120)
End Sub

Poniżej sposób i efekt wywołania kolejno tej samej procedury:
raz z pominięciem argumentu i drugi raz z podaniem argumentu innego niż domyślny

callmp_opt1.png

callmp_opt2.png

Poniżej jeszcze przykład procedury 5 argumentowej której zadaniem jest wyświetlenie objętości bryły w zależności od typu podstawy. Wykorzystałem tutaj instrukcję Select Case

Sub proc5arg(podstawa As String, wysokosc As Byte, Optional bok1 As Byte = 1, Optional bok2 As Byte = 1, Optional promien As Integer = 1)
Dim objetosc As Single
Const liczbaPi = 3.1415
Select Case podstawa
Case “kwadrat”
objetosc = bok1 * bok1 * wysokosc
Case “prostokat”
objetosc = bok1 * bok2 * wysokosc
Case “kolo”
objetosc = promien * promien * liczbaPi * wysokosc
End Select
MsgBox objetosc
End Sub

i zrzut ekranu
zrzutekranu.png