Jeden z czytelników, zwrócił mi uwagę iż trafił na ten wpis szukając rozwiązania innego problemu. Może się zdarzyć, że będziemy chcieli znaleźć w tabeli adres pozycji o określonej wartości. Czyli gdzie znajduje się komórka o wartości, powiedzmy 358,82 (Janek, Czerwony). Na końcu wpisu znajduje się link do przykładowego pliku.
To-Do – nowa aplikacja mobilna microsoft
Zaletą aplikacji jest integracja z outlookiem i interfejs webowy, przez co możemy zarządzać zadaniami przez telefon lub komputer.
Skrót do szybkiego sumowania
Często używam Excel jako kalkulatora, przydaje mi się wtedy skrót alt + =. Po wpisaniu kilku wartości mogę je szybko zsumować.
Tablice VBA – Helion
Nawet najbardziej doświadczony programista musi czasem poszukać w
internecie informacji o podstawowych elementach języka. Jak wyciągało się część ciągu znaków, jak pisze Case, jaki zakres ma Long itd. Co prawda można to szybko znaleźć w internecie, ale jeszcze szybsze (i wiarygodniejsze) są omawiane tutaj tablice.
Kurs VBA – Klasy – konstruktory i desktruktory
Deklaruje się je następująco w module klasy:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Option Explicit Private Sub Class_Initialize() MsgBox "Start" End Sub Private Sub Class_Terminate() MsgBox "Koniec" End Sub Public Sub PrintHello() MsgBox "Hello" End Sub |
Procedurę Class_Initialize nazywamy konstruktorem a procedurę Class_Terminate destruktorem.
Używam teraz moją klasę w krótkim programie.
1 2 3 4 5 6 7 8 9 |
Sub Zdarzenia() Dim lref_Test As cls_Test Set lref_Test = New cls_Test lref_Test.PrintHello End Sub |
Po uruchomieniu pokażą się kolejno trzy komunikaty:
UDF – formuły z funkcjami użytkownika
Kod znajduje się w module VBA:
1 2 3 4 5 6 7 8 9 10 11 |
Option Explicit Function SUMUJPARZYSTE(rng As Range) Dim lr_cell For Each lr_cell In rng If lr_cell.Value Mod 2 = 0 Then SUMUJPARZYSTE = SUMUJPARZYSTE + lr_cell.Value End If Next lr_cell End Function |
Tworzy je się tak samo jak zwykłe funkcje VBA. Umieszczone w module kodu mogą być używane w tym samym pliku. Można je też dodać do pliku personal lub dodatku. Funkcje UDF podlegają jednak kilku ograniczeniom.
Jedna strona poziomo
Wygląda to bardzo dobrze na komputerze i nie utrudnia w żaden sposób drukowania.
Instrukcja
Tworzę nowy dokument i zapisuję kilka zdań na pierwszej stronie. Dla testów można użyć losowy tekst lorem. Zaznaczam środkową część tekstu:
Kurs VBA – Klasy – Atrybuty i właściwości
Atrybuty określają aktualny stan obiektu. Dla przykładowej klasy Samochód może to być:
- Prędkość
- Pojemność
- Czy drzwi są zamknięte?
- Czy światła są zapalone?
- Stan oleju
Spójrzmy na taką (bardziej praktyczną) instrukcję:
1 |
If gr_plik.IsOpen = True Then |
Mamy tutaj atrybut, zadeklarowany następująco w module klasy.
1 |
Public IsOpen As Boolean |
Przybiera wartość True, jeżeli plik jest otwarty lub False, jeżeli zamknięty. W metodzie otwierającej plik ustawiamy ten atrybut na True. Mogę więc napisać gdzieś:
1 2 3 |
If gr_plik.IsOpen = True Then MsgBox "Plik jest wciąż otwarty" End If |
Czy ma w takim razie sens poniższa instrukcja?
1 |
gr_plik.IsOpen = False |
Pozornie ma sens, jest jednak niebezpieczna. Ostatecznie zamykanie pliku nie może się ograniczać do ustawienia wartości jakieś zmiennej, plik należy zapisać. Z pomocą przychodzą właściwości, dzięki którym możemy tworzyć coś pomiędzy atrybutami a metodami. Poza klasą używa się je jak atrybuty. W środku klasy jest to jednak szereg wykonywanych instrukcji. Utworzę więc właściwość:
1 2 3 4 5 |
Property Let isOpen(iv_IsOpen As Boolean) If iv_IsOpen = False Then CloseFile End If End Property |
Dzięki temu powyższe przypisanie wartości False uruchamia instrukcje, które wywołują metodę CloseFile.
Office lens – skanowanie telefonem
Natrafiłem ostatnio na ciekawą aplikację do skanowania dokumentów telefonem. Nazywa się Office Lens i jest dostępna za darmo w sklepach z aplikacjami. Zajmuje ledwo 50 mb, więc jeśli wolisz spróbować ją sam zamiast rozczytywać się nad moimi obserwacjami, to zapraszam do ściągnięcia, warto.
Ogólnie
Pierwsze co się rzuca w oczy, to uprawnienia, o które prosi aplikacja. Potrzebne jej do działanie jedynie dostęp do robienia i zapisywania zdjęć. Jest to miłe zaskoczenie. Nie lubię, kiedy małe aplikacje żądają dostępu do smsów, telefonu, tożsamości czy kontaktów. Przejmują wtedy praktycznie kontrolę nad telefonem.
Jakość działania mobilnego skanera z pewnością jest zależna od jakości aparatu w telefonie. Osobiście testowałem program na Xperi Z5 Compact z aparatem 23Mpx, czyli raczej dobrym sprzętem. Z drugiej jednak strony o sile aplikacji decydują algorytmy programu, a te działają świetnie.
Organizowanie mejli
Na górze listy widać mejle oznaczone flagą, są tak oznaczone wszystkie nowe mejle. Po załatwieniu sprawy klikam flagę i mejl spada poniżej. Dzięki temu każda nie załatwiona sprawa jest na górze, nawet jeżeli mejl przyszedł miesiąc temu.
Powyższy efekt można ustawić dzięki dwóm ustawieniom.