Parę uwag, uzupełnień
Konstrukcja With End With
Konstrukcja With End With With Worksheets("Arkusz1").Range("A1:B20").Interior.Color = RGB(255,0,0).Font.Underline = True.Font.Name = "Freestyle Script End With
Błędy formuł Wartość błędu #DZIEL/0! #N/D! #NAZWA?! #ZERO! #LICZBA! Opis Dzielenie przez 0 lub przez pustą komórkę Niedostępne dane lub WYSZUKAJ, które nic nie znalazło Nie rozpoznana nazwa, literówki, brak cudzysłowu, odwołanie się do funkcji z dodatku, który nie jest zainstalowany etc. Korzystamy z przecięcia się zakresów, które wcale się nie przecinają Zły argument, np. pierwiastek z liczby ujemnej lub wartość przekroczyła zakres #ADR! Odwołane do nieprawidłowej komórki np. usuniętej #ARG! Zły argument ##### Wynik nie mieści się w okienku, trzeba rozszerzyć
Kompatybilność 32 a 64 bity PtrSafe Tam gdzie deklarowaliśmy API, żeby korzystać z Shell: Declare Function GetWindowsDirectoryA Lib kernel32 Declare PtrSafe Function GetWindowsDirectoryA Lib kernel32
Uwaga na daty! Daty obsługiwane są od 01.01.1900 (w Mac u od 01.01.1904) W przypadku danych historycznych trzeba kombinować, ściągnąć dodatek Extended Date Functions lub traktować je jako liczby (ale wtedy ciężej je odejmować etc)
Okno Immediate Ctr+G w edytorze
Ustawienia Edytora VB Wymuszanie deklarowania zmienny Wyłączenie ostrzeżeń o błędnej składni Włączanie/wyłączanie powiadomień, podpowiedzi Zmiany czcionki i rozmiaru tekstu
To jest to wkurzające okieno przy popełnieniu błędu w kodzie
Wymusza deklarowanie zmiennych
Włącza podpowiedzi pojawiające się podczas pisania
Włącza podpowiedzi składni (pomarańczowe pola)
Włącza wyświetlanie wartości zmiennej po najechaniu na nią kursorem
Parametry siatki rysowania UserForm
Co robić z błędami?
Czytanie Range("A1").CurrentRegion.Speak Application.Speech.Speak Hello
Funkcje do usuwania zbędnych znaków Trim( Ltrim() Rtrim() coś s ) = coś s Usuwają puste znaki z obu stron, z lewej, z prawej
Funkcja do dzielenia ciągu na fragmenty Split ( expression [,delimiter] [,limit] [,compare] )
Split("Tech on the Net") Result: {"Tech", "on", "the", "Net"} Split("172.23.56.4", ".") Result: {"172", "23", "56", "4"} Split("A;B;C;D", ";") Result: {"A", "B", "C", "D"} Split("A;B;C;D", ";", 1) Result: {"A;B;C;D"} Split("A;B;C;D", ";", 2) Result: {"A", "B;C;D"} Split("A;B;C;D", ";", 3) Result: {"A", "B", "C;D"} Split("A;B;C;D", ";", 4) Result: {"A", "B", "C", "D"} https://www.techonthenet.com/excel/formulas/split.php
Obramowanie Range( A1 ).BorderAround(LineStyle, Weight, ColorIndex, Color, ThemeColor) Range("A1").BorderAround LineStyle:=xlDash, Weight:=xlThin
Errory On Error Resume Next Err = InputBox( numery błędów ) MsgBox Error & Err & Error(Err)
UserFormy - umiejscowienie
UserFormy dane do list
Deklarowanie tablic (powtórka z E24) Dim MyArray(0 To 100) As Integer Dim MyArray(100) As Integer to samo, bo domyślnie dolny indeks = 0 chyba, że: Option Base 1 Dwu wymiarowa tablica: Dim MyArray(1 To 10, 1 To 10) As Integer Dynamiczna tablica: Dim MyArray() As Integer ReDim MyArray(1 To x)
Zwracanie tablic Function MIESIACE_1kw() MIESIACE_1kw=Array( Styczeń, Luty, Marzec ) End Function
Crt+Shift+Enter w okienku funkcji przy zaznaczonym zakresie
Co robi Excel jak się włącza? Odczytuje ustawienia w rejestrze Windows Otwiera skoroszyty z folderu XLStart Odczytuje niestandardowe konfiguracje paska narzędzi i wstążki przechowywane w Excel.officeUI Otwiera skoroszyt makr osobistych personal.xlsb Otwiera plik *.xlb z informacjami o modyfikacjach menu i pasków narzędzi Otwiera skoroszyty przechowywane w alternatywnym folderze startowym Otwiera listy automatycznej korekcji i pliki *ACL Sprawdza, czy poprzednia praca z Excelem nie zakończyła się przedwcześnie np. bo zawiesił się sytem (odzyskiwanie) Otwiera zainstalowane dodatki Tworzy nowy, pusty skoroszyt (jeśli nic nie zostało otwarte)
Co robi Excel jak się włącza? Odczytuje ustawienia w rejestrze Windows Otwiera skoroszyty z folderu XLStart Odczytuje niestandardowe konfiguracje paska narzędzi i wstążki przechowywane w Excel.officeUI Otwiera skoroszyt makr osobistych personal.xlsb Otwiera plik *.xlb z informacjami o modyfikacjach menu i pasków narzędzi Otwiera skoroszyty przechowywane w alternatywnym folderze startowym Otwiera listy automatycznej korekcji i pliki *ACL Sprawdza, czy poprzednia praca z Excelem nie zakończyła się przedwcześnie np. bo zawiesił się sytem (odzyskiwanie) Otwiera zainstalowane dodatki Tworzy nowy, pusty skoroszyt (jeśli nic nie zostało otwarte)
Dodanie z poziomu kodu zakładek Jeśli wysyłacie arkusz, to: - Dodane paski pozostaną (bo.xlb się zmodyfukuje) - Jak użytkownik je usunie, dodatek może nie działać
Dodanie z poziomu kodu zakładek Personal.XLSB -Ukryty osobisty skoroszyt makr -Nie można współużytkować, ale można skopiować do folderu XLSTART C:\Program Files (x86)\microsoft Office\root\Office16\XLSTART
Rozpakowywanie Excela Otwórz skoroszyt tak, jakby był plikiem spakowanym ZIP
Dodatkowe funkcje ułatwiające pracę Private Function FileExists(fname) As Boolean ' Zwraca wartość PRAWDA jeżeli dany plik istnieje Dim x As String x = Dir(fname) If x <> "" Then FileExists = True _ Else FileExists = False End Function
Dodatkowe funkcje ułatwiające pracę Private Function FileNameOnly(pname) As String ' Zwraca nazwę pliku z łańcucha tekstu zawierającego pełną ścieżkę Dim temp As Variant length = Len(pname) temp = Split(pname, Application.PathSeparator) FileNameOnly = temp(ubound(temp)) End Function
Dodatkowe funkcje ułatwiające pracę Private Function PathExists(pname) As Boolean ' Zwraca wartość PRAWDA jeżeli dana ścieżka istnieje If Dir(pname, vbdirectory) = "" Then PathExists = False Else PathExists = (GetAttr(pname) And vbdirectory) = vbdirectory End If End Function
Dodatkowe funkcje ułatwiające pracę Private Function RangeNameExists(nname) As Boolean ' Zwraca wartość PRAWDA jeżeli dana nazwa zakresu istnieje Dim n As Name RangeNameExists = False For Each n In ActiveWorkbook.Names If UCase(n.Name) = UCase(nname) Then RangeNameExists = True Exit Function End If Next n End Function
Dodatkowe funkcje ułatwiające pracę Private Function SheetExists(sname) As Boolean ' Zwraca wartość PRAWDA jeżeli arkusz znajduje się w aktywnym skoroszycie Dim x As Object On Error Resume Next Set x = ActiveWorkbook.Sheets(sname) If Err = 0 Then SheetExists = True _ Else SheetExists = False End Function
Dodatkowe funkcje ułatwiające pracę Private Function WorkbookIsOpen(wbname) As Boolean ' Zwraca wartość PRAWDA jeżeli skoroszyt jest otwarty Dim x As Workbook On Error Resume Next Set x = Workbooks(wbname) If Err = 0 Then WorkbookIsOpen = True _ Else WorkbookIsOpen = False End Function
Dodatkowe funkcje ułatwiające pracę ThisWorkbook.BuiltinDocumentProperties( Last Save Time ) ThisWorkbook.BuiltinDocumentProperties( Last Print Time )
Do pracy na plikach Metoda GetOpenFilename obiektu Application Application.GetOpenFilename zwraca łańcuch zawierający ścieżkę z nazwą, a pyta systemowym oknem dialogowym
Do pracy na plikach Metoda GetOpenFilename obiektu Application Application.GetOpenFilename zwraca łańcuch zawierający ścieżkę z nazwą, a pyta systemowym oknem dialogowym Metoda GetSaveAsFilename obiektu Application Application.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText) wyświetla okno dialogowe Zapisz jako. Zwraca ścieżkę/nazwę, ale nie wykonuje działań (nie zapisuje!)
Pasek postępu
Tworzenie kreatora z MultiPage
Kolor Ciekawostka odcienie szarości
Kolor Ciekawostka odcienie szarości 29,9% czerwonego 58,7% zielonego 11,4% niebieskiego
Polecenia związane z plikami
Txt, zip Rozdział 25 :)
Praca z Wordem, praca z Outlookiem Patrz: załączone makra Walkenbacha
Suwaki w arkuszu Patrz: załączony Excel
Analiza Fouriera Patrz: FFT w arkuszu