Aplication
|
Właściwości i metody obiektu |
|
|
|
ActivateMicrosoftApp |
ActiveCell |
ActiveChart |
|
ActiveDialog |
ActivrMenuBar |
ActivePrinter |
|
ActiveSheet |
ActiveWindow |
|
|
ActiveWorkbook |
AddChartAutoFormat |
AddCustomList |
|
AddIns |
AlertBeforeOverwritting |
AltStartupPath |
|
Application |
AskToUpdateLinks |
AutoCorrect |
|
Build |
Calculate |
CalculateBeforeSave |
|
Calculation |
Caller |
CanPlaySounds |
|
CanRecordSounds |
Caption |
CellDragAndDrop |
|
Cells |
CentimetersToPoint |
Charts |
|
CheckSpelling |
ClipboardFormats |
ColorButtons |
|
Columns |
CommandUnderlines |
ConstrainNumeric |
|
ConvertFormula |
CopyObjectsWithCells |
Creator |
|
CustomListCount |
CutCopyMode |
DataEntryMode |
|
DDEAppReturnCode |
DDEExecute |
DDEInitiate |
|
DDEPoke |
DDERequest |
DDETerminate |
|
DefaultFilePath |
DeleteChartAutoFormat |
DeleteCustomList |
|
Dialogs |
DialogSheets |
DisplayAlerts |
|
DisplayClipboardWindow |
DisplayExcel4Menus |
DisplayFormulaBar |
|
DispalyFullScreen |
DisplayInfoWindow |
DisplayNoteIndicator |
|
DisplayRecentFile |
DisplayScrollBar |
DisplayStatusBar |
|
DoubleClick |
EditDirectliInCell |
EnableCancelKey |
|
EnableTipWizard |
Evaluate |
Excel4IntlMacroSheets |
|
Excel4MacroSheets |
ExecuteExcle4Macro |
FileConverters |
|
FindFile |
FixedDecimal |
FixedDecimalPlaces |
|
GetCustomListContents |
GetCustomListNum |
GetOpenFilename |
|
Goto |
Height |
Help |
|
IgnoreRemoteRequest |
InchesToPoint |
InputBox |
|
Interactive |
International |
Intersect |
|
Iteration |
LargeButtons |
Left |
|
LibraryPath |
MailLogoff |
MailLogon |
|
MailSession |
MailSystem |
MathCoprocessorAvailable |
|
MaxChange |
MaxIterations |
MemoryFree |
|
MemoryTotal |
MemoryUsed |
MenuBars |
|
Modules |
MouseAvailable |
MoveAfterReturn |
|
Name |
Names |
NextLetter |
|
OnCalculate |
OnData |
OnDoubleClick |
|
OnEntry |
OnKey |
OnRepeat |
|
OnSheetActivate |
OnSheetDeactivate |
OnTime |
|
OnUndo |
OnWindow |
OperatingSystem |
|
OrganizationName |
Parent |
Path |
|
PathSeparator |
PreviousSelections |
PromptForSummaryInfo |
|
Quit |
Range |
RecordMacro |
|
RecordRelativ |
ReferenceStyle |
RegistredFunctions |
|
RegisterXLL |
Repeat |
ResetTipWizard |
|
Rows |
Run |
Save |
|
ScreenUpdating |
Selection |
SendKeys |
|
SetDefaultChart |
Sheets |
SheetsInNewWorkbook |
|
ShortcutMenu |
ShowToolTip |
StandardFont |
|
StandardFontSize |
StartupPath |
StatusBar |
|
ThisWorkbook |
Toolbars |
Top |
|
TransitionMenuKey |
TransitionMenuKeyAction |
TransitionNaviKeys |
|
Undo |
Union |
UsableHeight |
|
UsableWidth |
UserName |
Value |
|
Version |
Visible |
Volatile |
|
Wait |
Width |
Windows |
|
WindowsForPens |
WindowsState |
Workbooks |
|
Worksheets |
|
|
|
Application.ActivateMicrosoftApp (index) Opis: |
|
|
|
|
|
|
|
Przełącza fokus z Excela na aplikację wskazywaną przez index. |
|
|
|
|
|
|
nawiasy [] oznaczają że obiekt jest domyślnym dla tej właściwości: |
|
|
|
|
|
|
|
|
|
|
|
|
xlMicrosoftWord |
|
xlMicrosoftPowerPoint |
xlMicrosoftMail |
|
|
|
xlMicrosoftAccess |
|
xlMicrosoftFoxPro |
xlMicrosoftProject |
|
|
|
xlMicrosoftSchedulePlus |
|
|
|
|
|
|
Pzykłady: |
|
|
|||
|
Application.ActivateMicrosoftApp(xlMicrosoftWord) |
|
|
|
Opis: |
|
|
|
Zwraca obiekt DialogSheet aktualnie aktywnego okna dialogowego o ile okno dialogowege ma fokus, jeżeli nie to zwraca Nothing |
|
|
nawiasy [] oznaczają że obiekt jest domyślnym dla tej właściwości: |
|
Parametry: |
|
|
nie posiada |
|
|
Właściwości i metody obiektu |
|
|
|
Add |
Application |
Copy |
|
Count |
Creator |
Delete |
|
FillAcrossSheet |
Item |
Move |
|
Parent |
PrintOut |
PrintPrewiev |
|
Select |
Visible |
|
|
Wszystkie obiekty mają kilkanaście właściwości, które pojawiają się przy wielu obiektach oraz trzy właściwości wspólne dla wszystkich obiektów.
Tutaj zebrano właściwości wspólne dla kilku obiektów, ale nie występują one w każdym obiekcie tak jak powyższe. |
|
Tabela poniżej zawiera wykaz właściwości pojawiających się przy wielu obiektach. |
|
|
|
Właściwość |
Opis |
|
|
Activate |
Aktywuje obiekt przełączając na niego fokus |
|
|
Caption |
Ustawia lub zwraca text pojawiający się w obiekcie |
|
|
Value |
Ustawia lub zwraca wartość oobiektu. Bardzo często jest to wartość domyślna |
|
|
Height |
Ustawia lub zwraca wysokość obiektu w punktach |
|
|
Left |
Ustawia lub zwraca poziomą pozycję obiektu w punktach |
|
|
Top |
Ustawia lub zwraca pionową pozycję obiektu w punktach |
|
|
Visible |
Ukrywa lub uwidacznia obiekt |
|
|
Width |
Ustawia lub zwraca szerokość obiektu w punktach |
|
|
Add |
Dodaje obiekt do kolekcji |
|
|
Count |
Liczy obiekty w kolekcji |
|
|
Index |
Zwraca liczbowy index obiektu w kolekcji |
|
|
Item |
Zwraca pojedyńczy obiekt z kolekcji |
|
|
Name |
Zwraca nazwę obiektu |
|
|
PrintOut |
Drukuje obiekt |
|
|
|
|
|
Wszystkie obiekty mają kilkanaście właściwości, które pojawiają się przy wielu obiektach oraz trzy właściwości wspólne dla wszystkich obiektów.
Tutaj zebrano właściwości wspólne dla kilku obiektów, ale nie występują one w każdym obiekcie tak jak powyższe. |
|
Właściwości i metody obiektu |
|
|
|
Application |
BlackAndWhite |
BottomMargin |
|
CenterFooter |
CenterHeader |
CenterHorizontally |
|
CenterVertically |
ChartSize |
Creator |
|
Draft |
FirstPageNumber |
FitToPagesTall |
|
FitToPagesWide |
FooterMargin |
HeaderMargin |
|
LeftFooter |
LeftHeader |
LeftMargin |
|
Order |
Orientation |
PaperSize |
|
Parent |
PrintArea |
PrintComments |
|
PrintGridLines |
PrintHeadings |
PrintNotes |
|
PrintQuality |
PrintTitleColumns |
PrintTitleRows |
|
RightFooter |
RightHeader |
RightMargin |
|
TopMargin |
Zoom |
|
|
|
|
|
workbook
|
Właściwości i metody obiektu |
|
|
|
AcceptAllChanges |
AcceptLabelsInFormulas |
Activate |
|
ActiveChart |
ActiveSheet |
AddToFavorites |
|
Application |
AutoUpdateFrequency |
Author |
|
BuiltinDocumentProperties |
CalculationVersion |
ChangeFileAccess |
|
ChangeHistoryDuration |
ChangeLink |
Chart |
|
Close |
CodeName |
Colors |
|
CommandBars |
ConflictResolution |
Comments |
|
Container |
CreateBackup |
Creator |
|
CustomDocumentProperties |
CustomViews |
Date1904 |
|
DeleteNumberFormat |
DisplayDrawingObjects |
EnvelopeVisible |
|
Excel4IntlMacroSheets |
Excel4MacroSheets |
ExclusiveAccess |
|
FileFormat |
FollowHyperlink |
ForwardMailer |
|
FullName |
HasMailer |
HasPassword |
|
HasRoutingSlip |
HighlightChangesOnScreen |
HighlightChangesOptions |
|
HTMLProject |
IsAddin |
IsInplace |
|
KeepChangeHistory |
Item |
Keywords |
|
LinkInfo |
LinkSources |
ListChangesOnNewSheet |
|
Mailer |
MergeWorkbook |
Modules |
|
MultiUserEditing |
Name |
Names |
|
NewWindow |
OnSave |
OnSheetActivate |
|
OnShetDeactivate |
Open |
OpenLinks |
|
OpenText |
Parent |
Path |
|
PersonalViewListSettings |
PersonalViewPrintSettings |
PivotCaches |
|
Post |
PrecisionAsDisplayed |
PrintOut |
|
PrintPreview |
Protect |
ProtectSharing |
|
ProtectStructure |
ProtectWindow |
PublishObjects |
|
PurgeChangeHistoryNow |
ReadOnly |
ReadOnlyRecommended |
|
RefreshAll |
RejectAllChanges |
ReloadAs |
|
RemoveUser |
Reply |
ReplyAll |
|
ResetColors |
RevisionNumber |
Route |
|
Routed |
RoutingSlip |
RunAutoMacros |
|
Save |
SaveAs |
SaveCopyAs |
|
Saved |
SaveLinkValues |
SendMail |
|
SendMailer |
SetLinkOnData |
Sheets |
|
ShowConflictHistory |
Styles |
Subject |
|
TemplateRemoveExtData |
Title |
Unprotect |
|
UnprotectSharing |
UpdateFromFile |
UpdateLink |
|
UpdateRemoteReferences |
UserStatus |
VBASigned |
|
VBProject |
WebOptions |
WebPagePreview |
|
Windows |
Worksheets |
WriteReserved |
|
WriteReservedBy |
|
|
1. Wstep |
21. Menu arkusza
21.1. Edytor menu
21.2. Modyfikowanie menu
21.3. Dostęp do pasków
21.3. Tworzenie pasków
21.4. Tworzenie przycisków
21.5. Modyfikowanie pasków
22. Obiekty własne.
22.1. Tworzenie obiektów
22.2. Własciwości dla obiektu.
22.3. Metody dla obiektu
22.4. Korzystanie z obiektu.
23. Użycie arkuszy
24. Wspólpraca z aplikacjami
25. Drukowanie
26. Dane zewnetrzne
27. Wykresy
28. Grafika
29. E-maile w VBA
30. Tworzenie pomocy
31. Obsługa błędów
32. Dodatki w Excelu
32.1. Tworzenie dodatku
32.2. Ładowanie dodatku
33. Biblioteki DLL i VBA
34. VB i Excel
35. Wirusy VBA
36. Testowanie proced
Jest wiele języków programowania, niektóre o wiele lepsze od VBA, ale prawie każdy z nas korzysta z programów zawartych w MS Office i prawie każdy nie jest programistą.
Czy warto uczyć się języka programowania ? TAK !
Ale można też inaczej. Zamiast znać po łepkach Visual C++, Delphi czy jeszcze cokolwiek innego może lepiej poznać dokładniej narzędzie z którego korzystamy codziennie. MS Excel używamy prawie wszyscy. 99% zadań przeciętnego pracownika mającego jako narzędzie pracy komputer można rozwiązać przy pomocy Excela. Może warto poznać trochę bardziej to narzędzie, zautomatyzować często wykonywane czynności itp. Wystarczy sięgnąć do Visual Basic dla Aplikacji a dzięki temu możemy w łatwy sposób programować również wykorzystując ASP, VBS itp. Narzędzie to zadowoli zarówno początkującego jak i wytrawnego użytkownika komputera, tym bardziej, że pojawiają się nowe programy wyposażone w moduł VBA
Moim zdaniem:
Pomimo znajomości kilku języków programowania, żaden nie dostarczył mi tak szybkiego sposobu dotarcia do celu w małych problemach jaki dostarcza Excel ze swoim Visual Basic'iem
Wiedzę o wykorzystaniu Visual Basica dla Aplikacji można czerpać z:
Odpowiedniej literatury, dostępnej na polskim rynku księgarskim
Systemu pomocy zaimplementowanemu w MS Excel
Internetu i zamieszczonych tam stron tarktujących o VBA
Analizując kod VBA napisany przez innych - np Redakcja miesięcznika Chip na swoim serwerze ogłosiła nieustający konkurs na najlepszą aplikację MS Office i zamieszcza tam prace zgłoszone do konkursu
Z listy dyskusyjnej pl.comp.lang.vbasic - listy zawierające w temacie "VBA" dotyczą Visual Basica dla Aplikacji
...... może wiesz co tu wpisać i podzielisz się swoją wiedzą.
Polecenie służy do uruchomienia programu pisanego z użyciem VBA.
Zachowanie się polecenia jest następujące:
jeżeli kursor znajduje się wewnątrz procedury - następuje uruchomienia procedury
jeżeli istnieje UserForm to następuje uruchomienie UserForm
jeżeli nie istnieją powższe warunki to następuje wywołanie okna dialogowego Uruchom
Obiekt Border (kolekcja Borders) odpowiada karcie Obramowanie z okna dialogowego Formatuj komórki. Aby je wyświetlić należy wybrać Format - Komórki lub wywołać okno dialogowe z poziomu VBA używając stałej (nazwy oknna) xlDialogBorder
Właściwości i metody obiektu
Application |
Color |
Colorindex |
Count |
Creator |
Item |
LineStyle |
Parent |
Value |
Weight
|
|
|
Współpracuje z obiektami
Arc |
Arcs |
Axis |
AxisTitle |
ChartArea |
ChartObject |
ChartObjects |
ChartTitle |
CheckBox |
CheckBoxes |
DataLabel |
DataLabels |
DownBars |
Drawing |
DrawingObjects |
Drawings |
DropLines |
ErrorBars |
Floor |
GridLines |
GroupObject |
GroupObjects |
HiLoLines |
Legend |
LegendKey |
Line |
Lines |
OLEObject |
OLEObjects |
OptionButton |
OptionButtons |
Oval |
Ovals |
Picture |
Pictures |
PlottArea |
Point |
Rectangle |
Rectangles |
SeriesLines |
Series |
TextBox |
TrendLine
|
UpBars
|
Walls
|
Słowa zarezerwowane dla VBA
Abs |
And |
Any |
As |
B |
BF |
Boolean |
ByRef |
ByVal |
Call |
Case |
CBool |
CCur |
CDate |
CDbl |
CDecl |
Cint |
Circle |
CLng |
Close |
Const |
Command |
CSng |
CStr |
CurDir |
Currency |
CVar |
CVDate |
CVErr |
Date |
Debug |
Declare |
DefBool |
DefCur |
DefDate |
DefDbl |
DefInt |
DefLng |
DefObj |
DefSng |
DefStr |
DefVar |
Dim |
Dir |
Do |
Double |
Each |
Else |
ElseIf |
Empty |
End |
EndIf |
Environ |
Eqv |
Erase |
Error |
Exit |
F |
False |
Fix |
For |
Format |
FreeFile |
Function |
Get |
Global |
Go |
GoSub |
GoTo |
If |
Imp |
In |
Input |
InputB |
Instr |
InstrB |
Int |
Integer |
Is |
LBound |
Len |
LenB |
Let |
Like |
Line |
Load |
LoadPicture |
Local |
Lock |
Long |
Loop |
LSet |
Me |
Mid |
MidB |
Mod |
Name |
New |
Next |
Not |
Nothing |
Null |
Object |
On |
Open |
Option |
Optional |
Or |
ParamArray |
Point |
Preserve |
|
Private |
Property |
PSet |
Public |
Put |
QBColor |
ReDim |
Rem |
Resume |
Return |
RSet |
Csale |
Savepicture |
Seek |
Select |
Set |
Sgn |
Shared |
Single |
Spc |
Static |
Stop |
StrComp |
String |
Sub |
Tab |
Then |
To |
True |
Type |
TypeOf |
UBound |
Unload |
Unlock |
Until |
Variant |
Wend |
While |
Width |
With |
Write
|
Xor
|
|
|
Projektowanie interface użytkownika
Ważnym elementem jest interafce użytkownika. Każda udostępniona aplikacja powinna posiadać interface, który w atrakcyjny, czytelny i dobrze zorganizowany sposób pozwoli użytkownikowi niemal intuicyjnie posługiwać się naszym "dziełem". Poniżej przedstawiam kilka uwag, które mogą być pomocne przy projektowaniu interface użytkownika
zachowaj spójny wygląd i sposób korzystania - konsekwentnie stosuj kolory, czcionki i formatowanie.
staraj się nie przeładowywać okna - niech zawiera tylko niezbędne elementy, które prowadzą do dalszych szczegółów.
dbaj o łatwą nawigację - odpowiedni system menu i pasków narzędzi
pamiętaj aby Twoje menu i paski były dostępne tylko w twojej aplikacji - zadbaj o ich usunięcie przy zakańczaniu aplikacji
pamiętaj aby można było używać klawiatury jak i myszy
zastanów się nad kolejnością działania klawisza tabulacji (Tab)
pamiętaj, ze niektórzy użytkownicy mogą mieć problem z widzeniem ekranu, posługiwania się myszką czy klawiaturą
wszędzie gdzie możliwe zamieszczaj odpowiednie wskazówki - w postaci tipsów lub odpowiednich odwołań do pomocy
pamiętaj, że nic tak nie denerwuje jak "zawieszenie" aplikacji - jeżeli występują długie operacje użyj czynników uspokajających - klepsydra na myszy, pasek postępu itp
zawsze sprawdzaj czy dane wprowadzane przez użytkownika są w dozwolonym zakresie i natychmiast reaguj na niewłaściwe dając możliwość poprawienia np. oczekiwano liczby a użytkownik wprowadził napis
żadna aplikacja nie jest doskonała - przewiduj błędy, zapewnij ich obsługę, zadbaj o odpowiednie zwięzłe komunikaty
Pisanie kodu
Każde zadanie można rozwiązać na wiele sposobów, na wiele sposobów można napisać kod aplikacji. Nie ma też takiego kodu którego nie potrzeba poprawić, ulepszyc czy rozbudować. Każda aplikacja z czasem zostaje rozbudowana o nowe elementy. To tylko kilka powodów dla których po raz kolejny przyglądamy się liniom kodu. Może kod nadaje się do wykorzystania w innych zadaniach. Poniżej kilka praktycznych uwag dzięki którym kod będzie kodem wielokrotnego użytku
staraj się pisać procedury jednozadaniowe tzn niech procedura wykonuje tylko jedno zadanie. Procedur będzie więcej, ale będą bardziej uniwersalne możliwe do zastosowania w wielu aplikacjach.
ustal swój sposób nazywania zmiennych, stałych obiektów itp i konsekwentnie się go trzymaj
korzystaj z dobrodziejstwa komentarza - komentarz to połowa sukcesu gdy po np latach będziesz musiał dokonać modyfikacji kodu
aplikacja może mieć kilka modułów - korzystaj z tego. Niech każdy moduł zawiera tylko te procedury, które są w jakiś logiczny sposób ze sobą związane. Takie rozwiązanie zwiększa też wydajność aplikacji gdyż VBA kompiluje tylko te moduły które w danym momencie są niezbędne - im mniej kompilowanych modułów, im ich mniejsza wielkość tym kod jest wydajniejszy
twórz własną bibliotekę procedur - zamiast pisać za każdym razem korzystaj z już wykonanej pracy odpowiednio wprowadzając modyfikacje.
twórz własne obiekty korzystając z modułu klas. Z czasem będziesz miał gotowe "czarne skrzynki" z których będziesz składał aplikację. Nie musisz modyfikować kodu w wielu miejscach, a tylko w jednym - module klasy
deklaruj zmienne, stałe itp. zawsze tak aby miały conajmniej jedną wielką literę w nazwie pozwoli to uniknąć problemów z tzw literówkami w kodzie.
zawsze pisz małymi literami, jeżeli po opuszczeniu wiersza edytor nie zamienił wielkości liter szukaj błędu - literówka, niezdeklarowana zmienna itp
nie usuwaj elementów związanych z testowaniem aplikacji a tylko zrób z nich komentarz, który zawsze możesz wykorzystać kasując jeden znak '
Bezpieczeństwo aplikacji VBA dla Excela jak i dla całego Office nie zawiera dobrych mechanizmów bezpieczeństwa. Nie ma żadnej metody zabezpieczenia napisanego kodu. Istnieje możliwość zablokowania kodu hasłem ale w internecie jest cała masa lepszych lub gorszych, amatorskich czy profesjonalnych, darmowych i płatnych programów do wydobywania hasła. Nie każdy jednak będzie łamał wprowadzone hasło, nie każdy jest zainteresowany jak to zrobiłeś, nie każdy chciałby podglądnąć Twoje sztuczki i sposoby więc w 90% użytkowników hasło jest wystarczającym zabezpieczeniem Pamiętaj i bądź świadomy - hasło w projekcie VBA nie jest barierą do pokonania i wcale nie trzeba wyrafinowanych metod, wiedzy, superkomputerów itp aby je poznać. Jeżeli jednak Twój kod jest tak cenny, że powyższe Ciebie niezadawala to:
ale potrzebujesz do tego specjalistycznego oprogramowania, wiedzy i świadomości że są ludzie którzy i do takich programów potrafią się włamać. |
Stałe
Wykaz stałych Visual Basica for Excel
Stałe
Stałe - sa to wartości zadeklarowane na stałe, i nie zmieniające sie w programie. Przykładem stałej jest liczba pi = 3,1416...Liczba ta nie ulega zmianie i mozna ja zdeklaowac jako stałą.
Dobrym nawykiem jest deklarowanie stałych dla wartości, która się nie zmienia. zapobiega to przypadkowym zmianom tej wartości. Stałej przypisujemy nazwę dzięki której mmamy dostep do niej np. zamiast za każdym razem pisać 3,1416 możemu zdeklarowac stałą o nazwie pi której przypiszemy wartosć 3,1416 ( lub dowolną inną wg naszego uznania). Przypisanie stałej nastepuje w nastepujący sposób:( na przykładzie definiowania stałej pi)
Const pi = 3,1416
Natomiast użycie stałej wygląda nastepująco ( na przykładzie obwodu koła)
ObwódKoła = 2 * pi * Promień
Nazwy stałych podlegaja tym samum zasadom, które stosujemy do nazywania zmiennych
Wykaz stałych
Visual Basic w Excelu 97 definiuje prawie 800 różnych stałych. Stałe te są wbudowane i są używane w dokumentacji.Wbudowane stałe można zobaczyc za pomocą okna przeglądanie obiektów (Object Browser). Poniżej przedstawiono algorytm korzystania z Przeglądarki obiektów w celu znalezienia odpowiedniej stałej
Przejdź do edytora Visual Basic / Narzedzia - Makro - Edytor Visual Basic lub Alt - F11/
Wbierz F2, lub Widok - Przglądarka Obiektów
W spisie Biblitek wybierz Excel
W oknie Klasy Przeglądarki obiektów znajdź Constans
W oknie Składowa 'Constans' poszukaj nazwy odpowiedniej stałej
Zaznaczając nazwę stałej w dolnej części Przeglądarki obiektów otrzymasz informacje o tej stałej. Zauważ, że wszystkie stałe programu Excel zaczynają się od liter xl / powinieneś widzieć taki obraz/
W Podobny sposób możesz odszukać stałe Visual Basica. Jako biblioteke wybierz Visual Basic. Zauważ, że wszystkie stałe zaczynają sie od liter vb
Wbudowane stałe Excela i VBA mają odpowiadające im wartości liczbowe. Np wartością stałej xlMaximized jest liczba -4137. Można użyć wartości zamiast nazwy stałej, ale bardzo szbko stracimy orientacje w tym co program wykonuje.
Tutaj znajdziesz wykaz stałych Excela i VBA pogrupowanych wg karegori dla których są zdefiniowane: np.: stałe dotyczace kursora, stałe dotyczące typów wykresów itp.
Zasady nazywania zmiennych i stałych:
Nazwy składają się z liter, cyfr i niektórych znaków przystankowych.
Nazwa musi zaczynać się od litery.
Litery duże i małe nie są rozróżniane, ale ich wielkość jest zachowywana.
Nie należy stosować w nazwie spacji, kropek i następujących znaków
!, #, $, %, &.
Maksymalna liczba znaków w nazwie nie powinna przekroczyć 255.
Nie można powtarzać nazw w ramach tego samego zakresu ( zasięgu zmiennej lub stałej).
Nazwa nie może być tzw. słowem zarezerwowanym w Visual Basic dla aplikacji
(użycie powoduje generację błędu)
Przykłady nazw:
moje_nazwisko
MojeNazwisko
KolorNiebieskiDlaTła
kolor_niebieski_dla_tła
Znak "_" użyty do rozdzielenia dwóch wyrazów powoduje większą czytelność nazwy
Innym sposobem zwiększenia czytelności nazwy jest zastosowanie dużych liter na początku wyrazu w nazwie (przykład 2 i 3).
Nie należy stosować zbyt długich nazw gdyż tylko zaciemniają kod programu oraz pomyśl ile czasu i pomyłek jest potrzebnych do wprowadzenia długiej nazwy.
Zmienna jest to symboliczna znazwa wskazująca na pewien obszar pamięci. O wiele łatwiej panować nad pisaniem programu jeżeli używamy nazw, które w jakiś sposób kojażą się ze zmienną przechowywaną w danym zakresie pamięci niż posługiwać się nic nie mówiącymi adresami komórek (zakresów) pamięci komputera. Najlepiej używać prostych, krótkich nazw dla zmiennych. Wyrazy w wielowyrazowych nazwach zmiennych rozdzielać znakiem _ lub każdy wyraz zaczynać z dużej litery. Pamiętać należy o zasadach obowiązujących przy nadawaniu nazw zmiennym Sposób deklaracji zmiennych: Dim zmienna As typ gdzie zmienna jest nazwą zmiennej, a typ określa typ danych przechowywany przez zmienną Uwaga: Pominięcie słowa kluczowego As i typu zmiennej spowoduje, że zmienna będzie typu Variant ( ze względów łatwiejszego diagnozowania błędów w pisanych programach należy unikać tego typu deklaracji zmiennej. Przykłady deklaracji zmiennych: |
Dim nazwaPliku As String |
Zasięg stałych i zmiennych ściśle związany jest ze sposobem ich deklaracji. Zmienna zdeklarowana w procedurze jest lokalna dla tej procedury. Oznacz to że w innych procedurach może istnieć zmienna o takiej samej nazwie ale przechowująca odmienne wartości. Aby zmienna była dostępna dla innych procedur należy zdeklarować ją na pozomie modułu na początku przed jakąkolwiek funkcją lub procedurą. Zmienne mogą być definiowane automatycznie ( w momencie pierwszego użycia nazwy) lub możemy wymusić konieczność deklaracji zmiennych. Wskazane jest deklarowanie zmiennych bowiem dzięki temu unikniemy wielu problemów w błędach nazw zmiennych. Wyłączenie automatycznego deklarowanie zmiennych następuje poprzez umieszczenie w Module instrukcji: Option Explicit. |
Tabela poniżej pokazuje zasięg zmiennych w zależności od ich definicji.
Słowo |
Miejsce |
Zasięg zmiennej lub stałej |
Dim |
Procedura |
Dostępna tylko w procedurze |
Dim |
Moduł |
Dostępna dla wszystkich procedur modułu |
Private |
Moduł |
Dostępna dla wszystkich procedur modułu |
Option Private |
Moduł |
Dostępna dla wszystkich procedur we wszystkich modułach bieżącego skoroszytu |
Public |
Moduł |
Dostępna dla wszystkich procedur we wszystkich modułach bieżącego skoroszytu |
Instrukcja przypisania jest najczęściej używaną instrukcją używaną we wszystkich językach programowania. Jest to instrukcja która zmiennej, właściwości lub obiektowi przypisuje określoną wartość.Tabela poniżej pokazuje przypadki użycia instrukcji przypisania, której szczególną cechą jest wystąpienie znaku "="
Przykład |
Opis |
Uwagi |
Let zmienna1 = 5 |
Instrukcja która zmiennej o nazwie zmienna1 przypisuje wartość 5 |
Słowo kluczowe jest pozostałością historyczną i w VBA może być pominięte (zalecane) |
zmienna1 = zmienna2 |
Instrukcja przypisuje zmiennej1 wartość przechowywaną przez zmienną2 |
Zmienne muszą być tego samego typu, lub zmienna1 musi być typu nadrzędnego nad zmienną2. W przeciwnym przypadku wystąpi błąd |
x = x + 3 |
To jest dopuszczalne. Najpierw wykonywane są polecenia po prawej stronie znaku = a dopiero póniej następuje przypisanie do zmiennej x |
|
Set zmienna1 = Worksheets("Arkusz1").Range("A1") |
Przypisuje do zmiennej1 obiekt wyznaczony przez wyrażenie po prawej stronie znaku = |
|
ActiveCell.Font.Italic=True |
Instrukcja przypisania użyta do zmiany właściwości obiektu |
|
Operatory arytmetyczne
|
Operator |
Opis |
Przykład zastosowania |
|
|
^ |
potegowanie |
2 ^ 3 = 8 |
|
|
- |
znak liczby |
-5 |
|
|
* |
mnożenie |
2 * 3 = 6 |
|
|
/ |
dzielenie |
3 / 2 = 1,5 |
|
|
\ |
dzielenie całkowite |
3 \ 2 = 1 wynikiem jest liczba całkowita nie wieksza niż wynik dzielenia { / } |
|
|
Mod |
Dzielenie modulo |
3 Mod 2 = 1 wynikiem jest reszta z dzielenia { / } |
|
|
+ |
dodawanie |
2 + 3 = 5 |
|
|
- |
odejmowanie |
3 - 1 = 2 |
|
Operatory znakowe
Operator |
Opis |
Przykład zastosowania |
& |
konkatenacja /łaczenie/ |
"Przykład" & " zastosowania" = "Przykład zastosowania" operator ten działa tylko na zmiennych typu String |
Dla operacji na zmiennych znakowych przeznaczone są również operatory porównania.
Operatory porównania
|
Operator |
Opis |
Przykład zastosowania |
|
|
= |
równe |
zwraca True gdy wartości są równe np: |
|
|
<> |
różne od |
zwraca True gdy wartości są różne np: |
|
|
> |
wieksze od |
Zwraca True jeżeli wartość po lewej jest wieksza od wartosci po prawej stronie znaku : np 3 > 2 => True |
|
|
< |
mniejsze od |
Zwraca True jeżeli wartość po prawej jest mniejsza od wartosci po lewej stronie znaku : np 2 < 3 => True |
|
|
>= |
wieksze lub równe |
Zwraca True jeżeli wartość po lewej jest wieksza lub równa wartosci po prawej stronie znaku : np 2 >= 2 => True |
|
|
<= |
mniejsze lub równe |
Zwraca True jeżeli wartość po prawej jest mniejsza lub równa wartosci po lewej stronie znaku : np 2 <= 2 => True |
|
|
Like |
porównanie |
Operator ten służy do porównywania ciągów.Jeżeli ciąg pasuje do wzorca, wynikiem jest wartość True; w przypadku braku dopasowania, wynikiem jest wartość False. Jeżeli ciąg lub wzorzec ma wartość Null, wynikiem jest wartość Null. Przykład |
|
Przykład zastosowania:
MójWarunek = "aBBBa" Like "a*a" ' Wynik: True
MójWarunek = "F" Like "[A-Z]" ' Wynik: True
MójWarunek = "F" Like "[!A-Z]" ' Wynik: False
MójWarunek = "a2a" Like "a#a" ' Wynik: True
MójWarunek = "aM5b" Like "a[L-P]#[!c-e]" ' Wynik: True
MójWarunek = "BAT123khg" Like "B?T*" ' Wynik: True
MójWarunek = "CAT123khg" Like "B?T*" ' Wynik: False
UWAGI operatora Like
Sposób działania operatora Like zależy od instrukcji Option Compare. Domyślną metodą porównania ciągów znaków dla wszystkich modułów jest Option Compare Binary.
W wyniku działania instrukcji Option Compare Binary porównania ciągów odbywają się w oparciu o porządek sortowania, wynikający z wewnętrznej binarnej reprezentacji znaków. W poniższym przykładzie pokazano typowy binarny porządek sortowania:
A < B < E < Z < a < b < e < z < Ŕ < Ę < Ř < ŕ < ę < ř
Możliwości tego mechanizmu pozwalają na stosowanie dowolnych kombinacji symboli wieloznacznych, list znaków i zakresów znaków.
Znaki argumentu pattern Pasujące znaki string
? Dowolny pojedynczy znak.
* Dowolna liczba znaków lub brak znaku.
# Dowolna pojedyncza cyfra (0?9).
[lista_znaków] Dowolny pojedynczy znak należący do listy_znaków.
[!lista_znaków] Dowolny pojedynczy znak nie należący do listy_znaków.
Grupa zawierająca jeden lub więcej znaków (lista_znaków) ujętych w nawiasy kwadratowe ([ ]) może zostać użyta w celu dopasowania do wzorca dowolnego pojedynczego znaku ciągu i może zawierać niemal każdy kod znaku, łącznie z cyframi.
Oto inne ważne reguły dotyczące dopasowywania według wzorca:
Wykrzyknik (!) umieszczony na początku listy_znaków oznacza, że dopasowanie nastąpi wtedy, gdy w ciągu znajdzie się dowolny znak, który nie znajduje się na liście_znaków. Poza nawiasem kwadratowym wykrzyknik oznacza sam siebie.
Jeżeli łącznik (?) ma oznaczać sam siebie, to musi on występować na początku listy_znaków (po wykrzykniku, jeżeli użyto wykrzyknika) lub na jej końcu. W każdym innym miejscu łącznik jest stosowany do oznaczenia zakresu znaków.
Znaki użyte do zdefiniowania zakresu muszą występować zgodnie z rosnącym porządkiem sortowania (od najmniejszego do największego). [A-Z] jest wzorcem prawidłowym, nie jest nim natomiast [Z-A].
Sekwencja znaków [] jest traktowana jako ciąg o długości zerowej ("").
Operatory logiczne
Operator |
Opis |
Przykład zastosowania |
|
||||
Not |
negacja |
Zwraca logiczną negację wyrażenia: Not True = False |
|
||||
And |
iloczyn logiczny, koniunkcja |
Zwraca logiczną koniungcje dwóch wyrażeń: Przykłady |
|
||||
Or |
Suma logiczna |
Zwraca logiczną alternatywę dwóch wyrażeń: Przykłady |
|
||||
Xor |
nierównoważność |
Zwraca logiczną różnicę symetryczną dwóch wyrażeń: Przykłady |
|
||||
Eqv |
równoważność |
Zwraca logiczną równoważność dwóch wyrażeń: Przykłady |
|
||||
Imp |
implikacja |
Zwraca logiczną implikację dwóch wyrażeń: Przykłady
|
|
||||
|
A |
B |
A And B |
|
|||
|
True |
True |
True |
|
|||
|
True |
False |
False |
|
|||
|
True |
Null |
Null |
|
|||
|
False |
True |
False |
|
|||
|
False |
False |
False |
|
|||
|
False |
Null |
Null |
|
|||
|
Null |
True |
Null |
|
|||
|
Null |
False |
Null |
|
|||
|
Null |
Null |
Null |
|
A |
B |
A Or B |
True |
True |
True |
True |
False |
True |
True |
Null |
Null |
False |
True |
True |
False |
False |
False |
False |
Null |
Null |
Null |
True |
True |
Null |
False |
Null |
Null |
Null |
Null |
A |
B |
A Xor B |
|||||
True |
True |
False |
|||||
True |
False |
True |
|||||
True |
Null |
Null |
|||||
False |
True |
True |
|||||
False |
False |
False |
|||||
False |
Null |
Null |
|||||
Null |
True |
Null |
|||||
Null |
False |
Null |
|||||
Null |
Null |
Null |
|||||
A |
B |
A Eqv B |
|
||||
True |
True |
True |
|
||||
True |
False |
False |
|
||||
False |
True |
False |
|
||||
False |
False |
True |
|
A |
B |
A Imp B |
True |
True |
True |
True |
False |
False |
True |
Null |
Null |
False |
True |
True |
False |
False |
True |
False |
Null |
True |
Null |
True |
True |
Null |
False |
Null |
Null |
Null |
Null |
Kolejność operatorów
Operatory Numeryczne |
negacja, *, /, \, Mod, +, -(odejmowanie), = |
|
||
Operatory Znakowe |
&, = |
|
||
Operatory Porównania |
=(porównanie), <>, <, >, <=, >=, Like, = (przypisanie) |
|
||
Operatory logiczne |
Not, And, Or, Xor, Eqv, Imp, = (przypisanie) |
|
||
Porównanie obiektów |
Is, = (przypisanie) |
|
||
Uwaga: |
Kolejność operatorów można zmieniać stosując nawiasy. W takim przypadku w pierwszej kolejności są wykonywane operacje wewnątrz nawiasów (z zachowaniem kolejności) a później operacje poza nawiasami |
|
|
Instrukcja sterująca If.....Then może być zapisana w dwóch postaciach:
postać wierszowa |
If warunek warunek Then polecenie |
postać blokowa |
If warunek Then |
If warunek warunek Then polecenie
Działanie tej struktury jest następujące:
po napotkaniu przedstawionej komendy program sprawdza warunek znjdujący się po słowie If
jeżeli warunek jest prawdziwy ( ma wartość logiczną True) program wykonuje polecenie znajdujace sie po słowie Then, a nastepnie przechodzi do kolejnej linii programu
jeżeli warunek jest nieprawdziwy - fałszywy (ma wartość logiczną False) program od razu przechodzi do nastepnej linii. Instrukcja znajdująca się po słowie Then nie zostanie wykonana.
Przykład:
/skopiuj poniższy kod i uruchom procedure zagadka/
Sub zagadka()
Liczba = InputBox("Podaj liczbę?|")
If Liczba = 5 Then MsgBox "Zgadłeś"
End Sub
javascript:history.back()
If warunek Then |
|
Działanie tej struktury jest następujące:
po napotkaniu przedstawionej komendy program sprawdza warunek znjdujący się po słowie If
jeżeli warunek jest prawdziwy ( ma wartość logiczną True) program wykonuje polecenia znajdujace sie w liniach od następnej aż do słów End If
jeżeli warunek jest nieprawdziwy - fałszywy (ma wartość logiczną False) program od razu przechodzi do linii występującej po słowach End If.. Instrukcje znajdujące się pomiędzy If....Then a End If nie zostanią wykonane.
Przykład:
Taki sam jak poprzednio ale w zapisie blokowym
Sub zagadka()
Liczba = InputBox("Podaj liczbę?|")
If Liczba = 5 Then
MsgBox "Zgadłeś"
End If
End Sub
Visual Basic dostarcza narzędzia pozwalającego na wykonanie określonej z góry ilości powtórzeń. Narzędziem tym jest pętla For.....Next
For licznik = początek To koniec [Step krok] |
Element instrukcji |
Opis |
licznik |
Element obowiązkowy. Jest to zmienna numeryczna, która pełni rolę licznika pętli. Zmienna ta nie może być typu Boolean ani elementem tablicy |
początek |
Element obowiązkowy. Jest to wartość początkowa licznika. |
koniec |
Element obowiązkowy. Jest to wartość końcowa licznika. |
krok |
Element nieobowiązkowy. Jest to wielkość, o jaką zwiększany lub zmniejszany ( gdy ma wartość mniejszą od zera) jest licznik przy każdym wykonaniu pętli. Wartość domyślna wynosi 1. |
instrukcje |
Instrukcje te wykonywane są określoną liczbę razy. |
Exit For |
Element Nieobwiązkowy. Napotkanie tej instrukcji powoduje natychmiastowe opuszczenie pętli. Wykonywana jest instrukcja znajdująac się bezpośrednio za słowem Next |
Warunki wykonania pętli:
Jeżeli krok >=0 : pętla wykona się (koniec-początek)/krok razy pod warunkiem że |
Przykład:
For i = 1 to 10 Step 2 |
Zastosowanie pętli For...Next
Instrukcje For...Next można stosować w celu powtarzania bloku instrukcji określoną liczbę razy. Pętle For wykorzystują zmienną licznikową, której wartość jest zwiększana lub zmniejszana przy każdym powtórzeniu pętli. Pamiętać należy, że zmienna licznikowa powinna być zadeklarowana jako Integer lub Long, natomiast brak deklaracji lub deklaracja jako zmienną typu Variant gdyż spowoduje to zwolnienie wykonywania się pętli
Uwaga Umieszczanie nazwy zmiennej licznikowej po instrukcji Next nie jest konieczne. Zaleca się stosować nazwę gdyż zwiększa to czytelność kodu programu
Pętle z warunkiem są to pętle w których wykonanie instrukcji wewnątrz pętli lub wyjście z pętli zależy od wartości warunku. Rozróżniamy następujące pętle:
Do While ... |
Sprawdza warunek na początku |
Wykonuje pętle jeżeli warunek jest prawdziwy |
Do Until ... |
Sprawdza warunek na początku |
Wykonuje pętle jeżeli warunek jest nieprawdziwy |
Do ... |
Sprawdza warunek na końcu |
Wykonuje pętle jeżeli warunek jest prawdziwy |
Do ... |
Sprawdza warunek na końcu |
Wykonuje pętle jeżeli warunek jest nieprawdziwy |
While ... |
Sprawdza warunek na początku |
Wykonuje pętle jeżeli warunek jest prawdziwy |
Pętle ze słowami kluczowymi While i Until są równoważne dla następującego przypadku:
While warunek = Until Not warunek
Pętle Do While, Do Until i While mogą nie wykonać się, natomiast pętle Do ...While, Do ... Until wykonują się conajmniej jeden raz bez wzgłędu na status warunku (sprawdzanego na końcu)
Uwaga: |
Wszystkie w/w pętle są równoważne, tzn problem można zapisać przy pomocy każdej z w/w pętli odpowiednio konstrując warunek (patrz przykład), najlepszym rozwiązaniem jest przyjęcie zasady stosowania jednej lub dwóch struktur pętli (w przypadku dwóch struktur najlepiej wybrać struktury z tym samym słowem kluczwym np: While) |
Poniżej przedstawiono procedurę wykonującą obliczenie n! = 1*2*3*...*9 z wykorzystaniem wszystkich rodzajów pętli (przykład trywialny ma na celu pokazanie różnic w rodzajach pętli)
n = 1 |
n = 1 |
n = 1 |
n = 1 |
n = 1 |
n = 1 |
Pętle typu obiektowego są w rzeczywistości podobne do pętli liczonych, gdyż tak jak tamte wykonują się określoną ilość razy. Różnica polega na tym, że pętla zastosowana do kolekcji obiektów wykona się po jednym razie dla każdego obiektu w kolekcji.
Pętla For Eaach dla kolekcji
Pętla For Each dla tablicy
Pętla For Each dla kolekcji
Składnia
For Each element In kolekcja
|
Pętla For Each dla tablicy
Składnia
For Each element In tablica |
Dim Element |
Pliki zewnętrzne
Visual Basic dla Aplikacji pozwala na korzystanie nie tylko z plików typowych dla Excela ale wbbudowane nnarzędzia dają dostęp do dowolnego typu pliku. Z programistycznego punktu widzenia mamy trzy rodzaje plików:
Pliki o dostępie sekwencyjnym - stosowane do zapisu plików tekstowych, takich jak rejestry błędów i raporty.
Pliki o dostępie swobodnym - stosowane do odczytu i zapisu danych z pliku bez jego zamykania. Pliki o dostępie swobodnym organizują dane w rekordy co ułatwia szybkie odnajdywanie informacji.
Pliki o dostępie binarnym - stosowane do odczytu i zapisu na dowolnej pozycji bajtowej w pliku, co ma miejsce na przykład przy przechowywaniu i wyświetlaniu obrazu mapy bitowej. Ten typ pozwala na dostęp do dowolnego pliku znajdującego się na dysku.
Zobacz komendy i funkcje zwiazane z obsługą plików
Pliki sekwencyjne umożliwiają sekwencyjne (tzn. kolejne) odczytywanie i zapisywanie danych - od samego początku do końca. Przykładem pliku sekwencyjnego jest plik tekstowy. Aby dostać się do konkretnej pozycji w pliku sekwencyjnym należy otworzyć plik i czytać dane aż do momentu napotkania poszukiwanego fragmentu danych. Wszelkie dane przechowywane są w postaci znakowej (string), zatem pliki sekwencyjne nie nadają się zbytnio do przechowywania danych liczbowych.
Otwieranie pliku w trybie sekwencyjnym:
Open "NazwaPliku" For Input As #1 ' otwarcie tylko do odczytu
Open "NazwaPliku" For Output As #1 'otwarcie tylko do zapisu
Czytanie z pliku sekwencyjnego:
MójZnak = Input(1, #1) 'wczytuje jeden znak z pliku
Line Input #1, Wiersz 'wczytuje z pliku linię podstawiając ją do zmiennej Wiersz
Zapis do pliku sekwencyjnego
Print #1, "Text zapisany do pliku" ' Drukuj tekst do pliku.
Print #1, ' Drukuj pusty wiersz do pliku.
Zapis do pliku instrukcją Print daje dużo możliwości formatowania zapisywanego textu, niestety trudno potem odczytać dane dlatego należy w takim przypadku używać instrukcji Write
Write #1, "text zapisany do pliku" ' Zapisz blok danych
Write #1, ' Zapisz pusty wiersz.
Zamykanie pliku
Close #numerpliku 'zamyka plik o numerze numerpliku
Close 'zamyka wszystkie otwarte pliki
W celu przeglądniecia całego pliku warto zastosować pętlę o postaci
Do Whiel Not EOF (NumerPliku)
'instrukcje czytające plik
Loop
Pliki o dostępie bezpośrednim zapewniają jak sama nazwa wskazuje bezpośredni dostęp do danych zapisanych w pliku. Jedynym ograniczeniem jest to, że dane te muszą być zorganizowane w strukturę o stałej długości. Można do tego użyć rekordu w którym deklarujemy odpowiednie pola. Dane są przechowywane w postaci binarnej, co daje oszczędność miejscaw porównaniu z zapisem tekstowym. Liczby zapisane w sposób binarny są też szybciej ładowane do pamięci komputera. W trybie bezpośrednim ważne jest określenie miejsca z/do którego czytamy/piszemy dane. Mamy zatem dostęp do dowolnego rekordu, pod warunkiem, że znamy jego pozycję.
Definiowanie rekordu danych instrukcją Type
Type MójRekord
Pole1 As String*10
Pole2 As Integer
Pole3 As Boolean
End Type
Dim Zmiena As MójRekord
Otwieranie pliku w trybie bezpośrednim:
Open "plik" For Random As #1 Len = Len(Zmienna)
otwiera plik w trybie bezpośrednim, określając długość rekordu danych na DługośćRekordu.
Czytanie z pliku sekwencyjnego:
Get #1,NrRekordu, Zmienna 'wczytuje jeden rekord z pliku
Zapis do pliku sekwencyjnego
Put #1,NrRekordu, Zmienna 'zapisuje zmienną typu MójRekord do pliku
Zmiana kolejności danych
Zamiast wczytywać wszystkie dane i zapisywać je w innej kolejności warto zastosować indeksowanie danych. Należy utworzyć tablicę typu integer w którym przechowujemy index do danych. Zapis i odczyt danych następuje wtedy jako odwołanie do indexu tablicy zamiast numeru rekordu.
Get #1, Indeks(NrRekordu), Zmienna 'zamiast Get #1,NrRekordu, Zmienna
Put #1, Indeks(NrRekordu), Zmienna 'zamiast Put #1,NrRekordu, Zmienna
Na początek każdy element tablicy Indeks() zawiera numer rekordu o tym samym numerze co indeks. Jeżeli chcesz zmienić kolejność rekordów wystarczy zmienić wartości w tablicy indeksów. Używanie tablicy indeksów daje dostęp do danych w ustalonej przez Ciebie kolejności a nie w kolejności w jakiej zostały zapisane. Pamiętaj o zapisaniu tabllicy indeksów np w pliku sekwencyjnym
Pliki o dostępie binarnym są szczególną odmianą plików o dostępie bezpośrednim dla którego długość rekordu wynosi 1 bajt. Wszystkie operacje dla plików o dostępie bezpośrednim odnoszą się do plików o dostępie binarnym.
Otwieranie pliku w trybie bezpośrednim:
Open "plik" For Binary As #1
otwiera plik w trybie bezpośrednim
Czytanie z pliku binarnego:
Get #1,NrBajtu, Zmienna 'wczytuje z pliku począwszy od bajtu NrBajtu tyle bajtów ile zdeklarowanoo znaków dla zmiennej
Zapis do pliku binarnego
Put #1,NrBajtu, Zmienna 'zapisuje do pliku
Uwaga: Warto Zmienną zadeklarować jako Dim Zmienna As String * DługośćZmiennej
Do operacji związanych z dostępem do plików zewnętrznych używane są następujące komendy:
Funkcja |
Opis |
FreeFile |
Zwraca następny wolny numer używany w instrukcji Open |
Open |
Otwiera plik w odpowiednim trybie |
Close |
Zamyka plik |
Print # |
Zapisuje dane do pliku |
Write #1 |
Zapisuje dane do pliku otwartego w trybie sekwencyjnym |
Line Input # |
Wczytuje linie z pliku do jednej zmiennnej |
Input # |
Wczytuje rekord textu do jednej lub kilku zmiennych |
Input |
Wczytuje jeden znak (bajt) z pliku |
EOF |
End of file - znacznik końca pliku |
LOF |
Zwraca wielkość pliku ww bajjtach |
Seek |
Zwraca następne miejsce do odczytu/zapisu |
Loc |
Zwraca aktualną pozycję zapisu/odczytu w pliku |
Put |
Zapisuje dane do pliku |
Get |
Czyta dane z pliku |
Dir |
Wyszukuje plik o zadanej nazwie |
FileLen |
Zwraca długość pliku |
FileAttrib |
Zwraca atrybuty pliku |
FileCopy |
kopionie pliku |
FileDateTime |
zwraca date i czas utworzenia lub ostatniej modyfikacji pliku |
FileExist |
Zwraca True jeżeli plik istnieje |
FileFin |
Poszukuje pliku |
FileFormat |
zwraca format pliku otwartego w excelu |
OpenTexFile |
Otwiera plik textowy |
RecentFile |
Zwraca listę ostatnio otwartych plików |
Kill |
kasuje plik z dysku |
RmDir |
usuwa katalog (musi być pusty) |
Name |
Zmienia nazwę pliku lub katalogu |
MkDir |
Tworzy katalog |
|
|
Obiekt jest elementem, który może być kontrolowany przez Visual Basic. Excel zawiera ogółem 128 obiektów i wśród aplikacji z pakietu MS Office zajmuje 2 miejsce (po MS Word) pod względem ilości obiektów.
Tutaj zamieszczono wykaz najważniejszych obiektów. Pamiętać należy o tym że obiekty zgrupowane są w tzw kolekcje oraz, że obiekt może zawierać w sobie inne obiekty.
Każdy obiekt posiada zbiór charakterystycznych dla siebie cech nazywanych właściwościami. Pamiętać należy o tym, że niektóre właściwości są również obiektami. Właściwość obiektu można ustawić lub czytać, niektóre właściwości są tylko do odczytu.
Oprócz właściwości obiekt charakteryzują metody, tj czynności które obiekt może wykonywać ( lub które możemy wykonać na obiekcie)
Wszystkie obiekty zebrane są w narzędziu Obiekt Browser (dostępnym z poziomu edytora VBA ). Hierarchię obiektów możemy obejrzeć na odpowiedniej stronie pliku pomocy dla Excela lub tutaj (Uwaga: duże pliki graficzne)
Obiekty udostępnione w Excelu dzielimy na następujące kategorie
Obiekty najwyższego poziomu - kontrolują aplikację, otwierane zbiory, wyświetlane okna
Obiekty typu Skoroszyt - umożliwiają dostęp do wszystkich elementów skoroszytu
Obiekty typu Arkusz - umożliwiają dostęp do elementów Arkusza
Obiekty typu Wykres - umożliwiają dostęp do elementów wykresu
Obiekty typu Rysunek - kontrolują dostęp do do obiektów związanych z rysowaniem
Obiekty typu Menu i Paski Narzędzi - pomagają modyfikować Menu i Paski Narzędzi
Obiekty typu Dialog - umożliwiają dostęp do okienek dialogowych wbudowanych i tworzonych przez użytkownika
|
Obiekt |
Opis |
|
Workbook |
Obiekt używany do otwierania nowych i wykonywania operacji na wszystkich aktualnie otwartych zbiorach. Arkusze, moduły, dialogi w skoroszycie. |
|
Worksheet |
Arkusz zawierający zakres komórek z danymi i osadzonymi obiektami |
|
DialogSheet |
Arkusz zawierający wygląd i projekt okienka dialogowego użytkownika. |
|
Chart |
Arkusz zawierający wykres i inne osadzone dane. |
|
Module |
Arkusz zawierający kod Visual Basica |
|
DocumentProperty |
Wbudowana informacja opisująca właściwości skoroszytu, widoczna w Explorerze po kliknięciu na Właściwości |
|
Name |
Zdefiniowana nazwa dla zakresu, rysunku lub scenariusza |
|
Style |
Nazwany zbiór atrybutów formatowania |
|
Interior |
Wewnętrzny obszar rysowanego obiektu |
|
Border |
Ramka |
|
Font |
Czcionka |
|
RoutingSlip |
Informacje związane z rozsyłaniem skoroszytu przez pocztę elektroniczną |
|
Mailer |
jw, tylko dla Macintosh powerTalk |
Obiekty w Excelu ułożone są w sposób hierarchiczny. Aby dostać się do odpowiedniego obiektu i ustawić lub przeczytać właściwości lub wywołąć odpowiednią metodę należy podać pełną ścieżkę. ( tutaj są rysunki do wykorzystania)
Przykład: aby w aktywnej komórce zmienić czcionkę na pogrubioną należy
Application.ActiveCell.Font.Bold = True
Bardzo często można pominąć w ścieżce obiekty, które są obiektami domyślnymi. W powyższym przypadku wystarczy napisać:
ActiveCell.Font.Bold = True
Należy być bardzo ostrożnym przy korzystaniu z elementów które są domyślne, bowiem często prowadzi to do błędnie działającego kod
Visual Basic daje do dyspozycji potężną ilość metod. Wiele z nich ma bardzo specyficzne zastosowanie. Poniżej przedstawiam tylko najbardziej popularne i najczęściej używane. O innych należy szukać informacji w rozdziale Obiekty gdzie dla każdego obiektu podano jego właściwości i metody.
Metoda |
Opis |
dotyczy obiektów |
Activate |
uaktywnia obiekt którego dotyczy |
różne |
ActivateNext |
uaktywnia następne okno spośród otwartych |
Window |
ActivatePrevious |
uaktywnia poprzednie okno |
Window |
Add |
pozwala na utworzenie nowego obiektu |
różne |
AddChartAutoFormat |
definiuje nowy format wykresu |
Application |
Arcs |
zwraca obiekt Arc |
Chart, Workseet |
Arrange |
uporządkowuje okna na ekranie |
Window |
AutoFit |
dostosowuje wielkość wiersza lub kolumny do wpisu |
Range |
AutoFormat |
automatyczne formatowanie bloku komórek |
Range |
Border |
zwraca jeden z obiektów Borders lub Border |
Range, Style |
Charts |
Zwraca obiekt Chart |
Application, Workbook |
Clear |
kasuje zawartość komórek |
Range |
ClearContents |
kasuje zawartość komórek |
Range |
ClearFormats |
kasowanie formatu komórek |
Range |
ClearNotes |
kasowanie notatek |
Range |
Copy |
kopiowanie obiektu do schowka |
różne |
Cut |
wycięcie obiektu |
różne |
Delete |
usunięcie obiektu |
różne |
FillLeft |
kopiowanie obiektu w kierunku na lewo |
Range |
FillDown |
kopiowanie obiektu w kierunku w dół |
Range |
FillUp |
kopiowanie obiektu w kierunku w górę |
Range |
FillRight |
kopiowanie obiektu w kierunku na prawo |
Range |
FunctionWizard |
uruchamia program FunctionWizard |
Range |
LargeScrool |
przewinięcie arkusza w oknie |
Window |
Offset |
przesunięcie względem aktualnego obiektu |
Range |
Open |
otwiera plik zachowany na dysku |
Workbook |
Paste |
wstawienie zawartości schowka do obiektu |
różne |
PrintOut |
wydrukowanie obiektu |
różne |
PrintPreview |
podgląd wydruku |
różne |
Quit |
zakończenie Excela |
Application |
Rectangles |
zwraca obiekt Rectangles |
Chart, Worksheet |
Repeat |
powtórne wykonanie operacji |
Application |
Save |
zachowanie obiektu w pliku na dysku |
różne |
Select |
zaznaczenie podanego obiektu |
różne |
SmallScroll |
przewinięcie obiektu |
Window |
Styles |
zwraca obiekt Style |
Workbook |
Undo |
anulowanie ostatniej operacji |
Application |
ActiveCell |
Aktywna komórka na aktywnym arkuszu |
ActievChart |
Aktywny arkusz wykresu |
ActiveDialog |
Aktywny arkusz dialogowy (dla Excel 5.0), aktywny dialog |
ActiveMenuBar |
Aktualnie wyświetlana listwa menu |
ActivePrinter |
Nazwa bieżącej drukarki |
ActiveSheet |
bieżący arkusz |
ActiveWindow |
Aktywne okno |
ActiveWorkbook |
Aktywny skoroszyt |
Selection |
Zwraca aktualnie wybrane obiekty |
Cells |
Jedna lub wszystkie komórki arkusza |
Columns |
Jedna lub wszystkie kolumny arkusza |
Evaluate |
Przekształca nazwę zakresu na jej adres |
Intersect |
Zwraca komórki wspólne dla kilku zakresów |
Range |
Zwraca zakres komórek |
Rows |
Jeden lub wszystkie wiersze arkusza |
Union |
Łączy kilka zakresów w jeden |
Calculation |
Przelicza wszystkie otwarte skoroszyty |
AddIns |
Zwraca jeden lub wszystkie dodatki dostępne w Excelu |
Windows |
Jedno lub wszystkie okna aktualnie wyświetlane dla Excela |
Workbooks |
Jeden lub wszystkie wszystkie aktualnie wczytane skoroszyty |
Charts |
Jeden lub wszystkie wykresy |
DialogSheets |
Jeden lub wszystkie dialogi |
Excel4IntlMacro |
Jeden lub wszystkie arkusze makr w wersji międzynarodowej - Excel4.0 w skoroszycie |
Excel4MacroSheets |
Jeden lub wszystkie arkusze makr w skoroszycie |
Sheets |
Jeden lub wszystkie arkusze w skoroszycie |
ThisWorkbook |
Skoroszyt zawierający aktualnie wykonywaną procedurę |
Worksheets |
Jeden lub wszystkie arkusze w skoroszycie |
Modules |
Jeden lub wszystkie arkusze modułów |
Names |
Jeden lub wszystkie obiekty typu Name zdefiniowane w skoroszycie |
MenuBars |
Jeden lub wszystkie dotępne paski menu |
ShortCutMenu |
Jeden lub wszystkie skróty do dostępnych menu |
Toolbars |
Jeden lub wszystkie zestawy narzędzi |
DDEAppReturnCode |
Ostatni otrzymany kod DDE |
DDEExecute |
Wykonuje komendę poprzez DDE |
DDEInitiate |
Rozpoczyna sesję DDE z inną aplikacją |
DDEPoke |
Wysyła dane do innej aplikacji poprzez DDE |
DDERequest |
Pobiera dane z innej aplikacji poprzez DDE |
DDETerminate |
Kończy sesję DDE |
SendKeys |
Wysyła sekwencję klawiszy do działającej aplikacji |
ExecuteExcel4Macro |
Wykonuje makro lub funkcję z Excel 4.0 |
Run |
Wykkonuje procedurę w VBA lub funkcję arkusza |
|
|
Właściwość |
Opis |
Obiekty z którymi współpracuje |
|
|||
ActiveCell |
zwraca aktywną komórkę będącą obiektem Range ( obszar) |
Window, [Application] |
|
|||
ActiveChart |
zwraca aktywny wykres będący obiektem Chart |
Window, [Application],[Workbook] |
|
|||
ActiveMenuBar |
zawiera aktualnie wyświetlane menu będące obiektem Menu-Bar. |
[Application] |
|
|||
ActivePane |
zwraca aktualnie aktywny panel okna arkusza |
Window |
|
|||
ActiveSheet |
zwraca aktualnie aktywny arkusz |
[Application}, Window, [Workbook] |
|
|||
ActiveWindow |
zwraca aktywne okno będące obiektem Window ( okono). |
[Application] |
|
|||
ActiveWorkbook |
zwraca aktywny pakiet arkuszy będący obiektem Workbook |
[Application] |
|
|||
AlertBeforeOverwriting |
określa, czy program będzie wyświetlał okno ostrzegawcze |
Application |
|
|||
Application |
podaje nazwę aplikacji ( programu), z którego pochodzi dany obiekt |
wszystkie obiekty |
|
|||
Bold |
określa, czy włączone jest pogrubienie czcionki |
Font |
|
|||
BottomMargin |
określa szerokość dolnego marginesu drukowanej strony |
PageSetup |
|
|||
Calculate |
określa tryb kalkulacji arkuszy obliczeniowych |
Application |
|
|||
Caption |
pełni różne funkcje z zależności od tego, z jakim obiektem |
różne obiekty |
|
|||
CellDragAndDrop |
okresla, czy dostepna jest technika drag and drop |
Application |
|
|||
CenterHorizontaly |
odpowiada za wycentrowanie arkusza na wydruku w poziomie |
PageSetup |
|
|||
CenterVetically |
odpowiada za wycentrowanie arkusza na wydruku w pionie |
PageSetup |
|
|||
ChartArea |
zwraca pole z wykresem podanego wykresu będące obiektem Chart Area ( pole z wykresem). |
Chart |
|
|||
ChartTitle |
zwraca tytuł podanego wykresu będący obiektem ChartTitle ( tytuł wykresu). |
Chart |
|
|||
Color |
określa kolor obiektu |
Border, Borders, Font, Interior |
|
|||
ColumnWidth |
zwraca tablicę, w której znajduje się podana komórka |
Range |
|
|||
CurrentRegion |
zwraca prostokątny blok komórek utworzony z niepustych komórek otaczających podaną komórkę |
Range |
|
|||
DispayAlerts |
określa, czy podczas wykonywania procedur program będzie wyświetlał okna ostrzegawcze |
Application |
|
|||
DispayBlanksAs |
określa, w jaki sposób traktowane są puste komórki wchodzące w skład serii danych wykresu |
Chart |
|
|||
DisplayDrawingObjects |
określa, w jaki sposób wyświetlane są obiekty graficzne we wszystkich arkuszach |
Workbook |
|
|||
DisplayExcel4Menus |
określa, czy program korzysta z własnego zestawu menu czy też z menu programu Excel 4.0 |
Application |
|
|||
DisplayFormulaBar |
kontroluje wyświetlanie na ekranie wiersza edycji zawartości komórki |
Application |
|
|||
DisplayFormulas |
określa, czy w komórkach arkuszy obliczeniowych będą wyświetlane wyrażenia czy ich wyniki |
Window |
|
|||
DisplayFullScreen |
włącza i wyłącza wyświetlanie pełnego ekranu |
Application |
|
|||
DisplayGridlines |
odpowiada za wyświetlanie siatki rozdzielającej komórki arkusza |
Window |
|
|||
DisplayHeadings |
odpowiada za wyświetlanie wiersza z nazwami kolumn i kolumny z nazwami wierszy |
Window |
||||
DisplayHorizontalScrollBar |
odpowiada za wyświetlanie belki przesuwu poziomego |
Window |
||||
DisplayNoteIndicator |
określa, czy będą wyświetlane znaczniki wyróżniające komórki z przypisanymi notatkami |
Application |
||||
DisplayScrollBars |
określa czy we wszystkich pakietach arkuszy mają być wyświetlane belki przesuwu |
Application |
||||
DispayStatusBar |
kontroluje wyświetlanie wiersza stanu |
Application |
||||
DisplayWorkbookTabs |
kontroluje wyświetlanie belki pakietu arkuszy |
Window |
||||
DisplayZeros |
określa, co jest wyświetlane komórce arkusza gdy znajduje się w niej liczba 0 ( lub wyrażenie dające w wyniku 0): |
Window |
||||
Draft |
pozwala na włączenie/ wyłączenie trybu Draft drukowania arkusza |
PageSetup |
||||
EditDirectlyInCell |
określa, czy możliwa jest edycja zawartości komórki bezpośrednio w komórce |
Application |
||||
EntireColumn |
zwraca kolumnę lub blok kolumn, do których należą komórki w podanym bloku komórek |
Range |
||||
FirstPageNumber |
Wartością jest numer, jaki otrzyma pierwsza strona wydruku |
PageSetup |
||||
Font |
Właściwość zwraca czcionkę podanego obiektu |
różne obiekty |
||||
Formula |
Właściwość określa, jakie wyrażenie znajduje się w podanym obiekcie |
różne, najczęściej Range |
||||
FormulaR1C1 |
Właściwość określa, jakie wyrażenie znajduje się w podanym obiekcie |
różne |
||||
FreezePanes |
Właściwość określa, czy panele w podanym oknie są zamrożone czy też nie |
Window |
||||
GridlineColor |
określa kolor siatki rozdzielającej komórki arkusza znajdującego się w podanym oknie |
Window |
||||
HasFormula |
podaje, czy w komórce podanej jako obiekt Range ( obszar) znajduje się wyrażenie |
Range |
||||
HasLegend |
podaje, czy dany wykres posiada legendę |
Chart |
||||
Hidden |
określa, czy wiersz ( wiersze) lub kolumna ( kolumny) podane jako obiekt są ukryte |
Range |
||||
HorizontalAlignment |
określa wyrównanie w poziomie obowiązujące dla podanego obiektu |
różne obiekty |
||||
IncludeAlignment |
określa, czy podany styl zawiera format dotyczący sposobu wyrównania zawartości komórki |
Style |
||||
IncludeBorder |
określa, czy podany styl zawiera format ramki otaczającej komórkę |
Style |
||||
IncludeFont |
określa, czy podany styl zawiera format dotyczący wyglądu czcionki |
Style |
||||
IncludeNumber |
określa, czy dany styl zawiera format wyświetlania liczb |
Style |
||||
IncludePatterns |
określa, czy podany styl zawiera format wypełnienia komórki |
Style |
||||
IncludeProtection |
określa, czy podany format dotyczący zabezpieczenia zawartości komórki |
Style |
||||
Interior |
współpracuje z wieloma obiektami i zwraca wypełnienie obiektu |
Range |
||||
Italic |
odpowiada za włączenie /wyłączenie pochylenia czcionki |
Font |
||||
LargeButtons |
określa, czy przyciski na belce narzędziowej maja być wyświetlane w powiększeniu |
Application |
||||
LeftMargin |
zawiera szerokość lewego marginesu drukowanej strony |
PageSetup |
||||
Legend |
zawiera legendę należącą do podanego wykresu |
Chart |
||||
MoveAfterEnter |
określa, czy po wpisaniu danych do komórki i wciśnięciu klawisza <Enter> nastąpi przesunięcie aktywnej komórki o jedną komórkę w dół |
Application |
||||
NumberFormat |
zawiera format wyświetlania liczb obowiązujący w podanej komórce |
Range, style |
||||
Orientation |
współpracuje z wieloma obiektami i spełnia różne funkcje w zależności od użytego obiektu |
różne |
||||
PageSetup |
zwraca obiekt Page setup ( wygląd strony) zawierającego zestaw parametrów określających wygląd strony |
różne |
||||
PaperSize |
określa rozmiar papieru, na którym wykonany zostanie wydruk |
|
||||
PlotArea |
zwraca obiekt PlotArea będący tłem podanego wykresu |
Chart |
||||
Position |
określa położenie podanego obiektu. |
różne |
||||
PrecisionAsDisplayed |
określa dokładność przeprowadzania obliczeń |
|
||||
PrintGridlines |
określa, czy na wydruku pojawi się siatka rozdzielająca komórki |
PageSetup |
||||
PrintHeadings |
określa, czy na wydruku pojawią się: wiersz z nazwami kolumn i kolumna z nazwami wierszy |
PageSetup |
||||
PrintNotes |
określa, czy wraz z arkuszem będą drukowane notatki przypisane do komórek |
PageSetup |
||||
ReferenceStyle |
określa obowiązujący format zapisu adresów komórek |
Application |
||||
RightMargin |
zawiera szerokość prawego marginesu drukowanej strony |
PageSetup |
||||
Row |
podaje numer pierwszego wiersza znajdującego się w podanym bloku komórek. |
Range |
||||
RowHeight |
określa wysokość ( w punktach) wszystkich wierszy zawartych w podanym bloku komórek |
Range |
||||
Selection |
zwraca aktualnie zaznaczony obiekt |
Application, Window |
||||
SheetsInNewWorkbook |
zawiera domyślną liczbę arkuszy obliczeniowych dla każdego nowo otwartego pakietu arkuszy |
Application |
||||
Size |
współpracuje z obiektem Font ( czcionka) i określa rozmiar czcionki |
Font |
||||
Split |
odpowiada za włączenie i wyłączenie podziału okna na panele |
Window |
||||
SplitColumn |
wyznacza położenie linii pionowego podziału okna na panele |
Window |
||||
SplitHorizontal |
wyznacza położenie linii poziomego podziału okna |
Window |
||||
SplitRow |
wyznacza położenie linii poziomego podziału okna na panele |
Window |
||||
SplitVertical |
wyznacza położenie linii pionowego podziału okna na panele |
Window |
||||
StandardFont |
zawiera nazwę domyślnej czcionki. |
Application |
||||
StandardFontSize |
zawiera rozmiar domyślnej czcionki |
Application |
||||
StandardHeight |
zawiera domyślną wysokość wierszy arkusza obliczeniowego |
Application |
||||
StandardWidth |
zawiera domyślną szerokość kolumn arkusza |
Application |
||||
Strikethrough |
przekreślenie czcionki |
Font |
||||
Style |
zawiera nazwę stylu obowiązującego w ppodanym bloku komórek |
Range |
||||
Subscript |
indeks dolny dla danej czcionki |
Font |
||||
Superscript |
indeks górny dla danej czcionki |
Font |
||||
ThisWorkbook |
zwraca pakiet arkuszy zawierający moduł z podprocedurą w której właściwość została użyta |
Workbook |
||||
TopMargin |
zawiera szerokość górnego marginesu |
PageSetup |
||||
Underline |
podkreślenie czcionki |
Font |
||||
Value |
różne dla różnych obiektów |
różne |
||||
VerticalAligment |
sposób wyrównania w pionie |
różne |
||||
Weight |
grubość lini tworzącej ramkę |
Border |
||||
WindowState |
określa rozmiar okna |
Application, Window |
||||
Worksheet |
zwraca arkusz do którego należy podany blok komórek |
Range |
||||
Zoom |
określa skalę dla podglądu okna lub wydruku |
Window, PageSetup |
Uwaga:
(R) - tylko do odczytu
(W)- do zapisu i odczytu
Jeżeli nazwa obiektu jest ujęta w nawiasy kwadratowe [ ] to dany obiekt jest domyślny (można pominąć go w poleceniu)
W Excelu są dostępne następujące procedury uruchomiane gdy zachodzi określone zdarzenie - wywoływane automatycznie w momencie wystąpienia określonej akcji np. kliknięcie myszką.
Auto_Open |
Otwarcie Skoroszytu przy załadowaniu do Excela |
Auto_Close |
Zamknięcie Skoroszytu |
Activate |
Aktywacja (otwarcie lub przejęcie fokusa)- dla obiektów Workbook, Worksheet |
AddinInstall |
Występuje w momencie instalacji obiektów AddIn |
AddinUninstall |
Występuje w momencie deinstalacji obiektów AddIn |
BeforeClose |
Występuje w momencie zamknięcia arkusza. Dla obiektu Workbook |
BeforeDoubleClick |
Występuje bezpośrednio po podwójnym kliknięciu przyciskiem myszy dla obiektu Worksheet |
BeforePrint |
Występuje bezpośrednio przed drukowaniem obiektu Workbook |
BeforeRightClick |
Występuje bezpośrednio po kliknięcu prawym przyciskiem myszy dla obiektu Worksheet |
BeforeSave |
Występuje bezpośredno przed zapisem dla obiektu Workbook |
Calculate |
Występuje gdy dane w arkuszu są przeliczane na skutek działalności użytkownika. Wspólpracuje z Worksheet i Chart |
Change |
Występuje gdy nastąpi zmiana danych w arkuszu.(Obiekt Worksheet) |
Deactivate |
Deaktywacja ( zamknięcie lub zdięcie fokusa) - dla obiektów Workbook, Worksheet |
NewSheet |
Występuje dla obiektu Workbook bezpośrednio przed wstawieniem nowego obiektu Worksheet |
Open |
Występuje dla obiektu Workbook bezpośrednio po otwarciu |
OnAction |
Występuje gdy obiekt uzyskuje fokus. |
OnCalculate |
Tylko do wersji Excel 5.0, od Excel 95 zdarzenie Calculate |
OnData |
Tylko w wersji Excel 5.0. Występuje gdy obiekt otrzymuje dane w wyniku połączenia OLE. Wspólpracuje z Application i Worksheet. Od wersji Excel 95 dostępne jest zdarzenie Change lub SheetChange |
OnDoubleClick |
Występuje gdy użytkownik klika dwukrotnie obiekt (Application, Chart, DialogSheet, Worksheet). Zastępuje typową akcję dla tego zdarzenia. Od Excel 95 zdarzenie BeforeDoubleClick |
OnEntry |
Występuje gdy wprowadzane są dane do komórki lub paska formuły. Obiekt Application, Worksheet. Od Excel 95 zdarzenie Change |
OnKey |
Metoda pozwalająca na wywołanie zdarzenia gdy użytkownik naciska określony klawisz. (Tylko dla Application) |
OnRepeat |
Metoda pozwalająca na wywołanie zdarzenia gdy powtarzana jest ostatnia akcja przy edycji.(Tylko dla Application) |
OnSave |
Zdarzenie od Excel 95 zastąpione przez BeforeSave |
OnSheetActivate |
Występuje gdy obiekt (Application, Chart) uzyskuje fokus. Od Excel 95 zastąpione przez Activate i SheetActivate |
OnSheetDeactivate |
Występuje gdy obiekt (Application, Chart) traci fokus.Od Excel 95 zastąpione przez Deactivate i SheetDeactivate |
OnTime |
Metoda pozwalająca na wywołanie zdarzenia gdy następuje określony moment czasu. (Tylko dla Application) |
OnUndo |
Metoda pozwalająca na wywołanie zdarzenia przy cofaniu akcji edycji. (Tylko dla Application) |
OnWindow |
Metoda pozwalająca na wywołanie zdarzenia gdy okno otrzymuje fokus, ale tylko w wyniku działania użytkownika. Dla obiektów Application, Window |
SelectionChange |
Zdarzenie występuje gdy nastąpi zmiana aktywnego obszaru. Zdarzenie dla obiektu Worksheet |
SheetActivate |
Zdarzenie występuje w przypadku przejęcia fokusu przez obiekt Chart lub Worksheet. |
SheetBeforeDoubleClick |
Zdarzenie występujące bezpośrednio po podwójnym kliknięciu lewym przyciskiem myszy, a przed domyślną akcją związaną z tym zdarzeniem.Obiekty Application, Workbook |
SheetBeforeRightClick |
Zdarzenie występujące bezpośrednio po kliknięciu prawym przyciskiem myszy, a przed domyślną akcją związaną z tym zdarzeniem.Obiekty Application, Workbook |
SheetCalculate |
Zdarzenie występujące bezpośrednio po przeliczeniu wartości. Obiekty Application, Workbook |
SheetChange |
Zdarzenie występuje dla obiektu Worksheet po zmianie danych |
SheetDeactivate |
Zdarzenie występuje w przypadku utraty fokusu przez obiekt Chart lub Worksheet. |
SheetSelectionChange |
Zdarzenie występuje gdy nastąpi zmiana aktywnego obszaru. Zdarzenie dla obiektu |
WindowActivate |
Występuje gdy jest aktywowane okno zawierające obiekt Workbook |
WindowDeactivate |
Występuje gdy dla okna są zmieniane rozmiary. |
Visual Basic dla Aplikacji (VBA) dostarcza bardzo dużo funkcji, które zebrano w następujące grupy:
Funkcje matematyczne i liczbowe
Funkcje konwersji typów
Funkcje trygonometryczne
Funkcje operujące na stringach (napisach)
Funkcja format
Funkcje daty i czasu
Funkcje operujące na zbiorach (plikach)
Funkcje sprawdzające
Funkcje inne
Wykorzystanie funkcji Excela z użyciem VBA
Kategoria |
Funkcja |
Opis |
Ogólne |
Abs |
Zwraca wartość bezwzględną liczby |
|
Exp |
Zwraca exponent liczby |
|
Log |
Zwraca logarytm naturalny |
|
log2, log10, logN |
Zobacz uwagi do Log |
|
Sgn |
Zwraca znak liczby |
|
Sqr |
Zwraca pierwiastek kwadratowy liczby |
Liczby losowe |
Randomize |
Inicjuje generator liczb losowych |
|
Rnd |
Zwraca liczbę losową z zakresu 0 do 1 |
Konwersja |
Str |
Przekształca liczbę na napis |
|
Fix |
Usuwa część ułamkową |
|
Hex |
Przekształca liczę na zapis heksadecymalny |
|
Int |
Usuwa część ułamkową |
|
Oct |
Przekształca liczę na zapis ósemkowy |
|
Val |
Zwraca licze z napisów |
Trygonome- |
Atn |
Arcus tangens kąta w radianach |
|
Cos |
Cosinus kąta wyrażonego w radianach |
|
Sin |
Sinus kąta wyrażonego w radianach |
|
Tan |
Tangens kąta wyrażonego w radianach |
Czym jest dodatek Excela
Oto kilka cech dodatku:
dodatek ma rozszerzenie xla
dodatek pozostaje załadowany od chwili załadowania aż do wyładowania lub zamknięcia Excela
narzędzia zaimplementowane w dodatku są dostępne dla wszystkich otwartych skoroszytów
zapisanie skoroszytu jako dodatku powoduje że okno skoroszytu staje się niewidoczne, ale możesz je wykorzystywać do przechowywania obliczeń lub danych potrzebnych do działania dodatku
Użytkownicy nie mogą używać klawisza Shift do omijania zdarzeń wbudowanych w dodatek, masz więc pewność, że wszystko wykona się tak jak zaplanowałeś
procedury dodatku nie wyświetlają komunikatów - np gdy uzytkownik chce wykonać operacje grożącą utratą danych procedury dodatku nie zapytają się o potwierdzenie ale wykonają to. Przykład: zamykanie niezapisanego skoroszytu powoduje zapytanie o zapisanie, gdy procedura z dodatku zamyka skoroszyt to takiego zapytania nie będzie.
aby dodatek się automatycznie ładował przy otwarciu Excela musi być w katalogu XLStart
O właściwościach obiektu AddIn (kolekcji AddIns) ze strony VBA odpowiedzialnego za dostep do dodatków możesz dowiedzieć się czytając opis Własciwości obiektu AddIn
Biblioteki dynamiczne DLL są szeroko używane w Windows. Praktycznie każdy zaawansowany program posiada własne biblioteki, zawierające procedury. Niestety w celu ich użycia trzeba znać sposób deklaracji funkcji z biblioteki. Gdy tego nie znamy nie można praktycznie użyć danej biblioteki DLL.
Biblioteki DLL systemu Windows (zwane też API) są dość dobrze udokumentowane i można je znaleźć na wielu stronach internetu. Tutaj możesz ściągąć plik pomocy opisujący wiele najczęściej używanych deklaracji funkcji z bibliotek DLL systemu Windows.
Procedura użycia biblioteki:
deklarowanie funkcji
uwaga: funkcja musi być zdeklarowana w ściśle określony sposób inaczej zwraca błąd
przykład:
Declare Function GetWindowsDirectory Lib "KERNEL32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
użycie zadeklarowanej funkcji
przykład:
zmienna = GetWindowsDirectory(NazwaKatalogu,260)
Obraz deklaracji i wywołania funkcji DLL
Obraz wykonania powyższej procedury:
Posiadając Visual Basic możemy sterować Excelem podobnie jak z poziomu VBA. Poniżej pokazano sposób deklaracji takiej aby obiekty Excela były dostępne z poziomu Visual Basica.
Pierwszy krok:
Deklaracja zmiennych
Dim objExcel As Object
Dim Nazwa As String ' Nazwa zawiera ścieżkę dostępu do istniejącego arkusza Excela
Krok drugi:
Ustawienie dostępu do obiektu
Set objExcel = GetObject(Nazwa)
Krok trzeci:
Ustawienie właściwości Excela
objExcel.Application.Visible=True ' ustawia czy aplikacja Excel będzie widoczna
objExcel.Windows(1).Visible=True 'ustawia czy okno w Excelu będzie widoczne
Krok czwarty:
Operacje na pliku Excelowym
objExcel.Sheets(1).Cells(1,1).Value = "dowolna wartość"
składnia jest typowa dla VBA, bowiem poprzez zmienną obiektową objExcel widzimy wszystkie obiekty Excela
Krok piąty:
Jeżeli potrzeba zachować zmiany w pliku Excela
objExcel.SaveAs(Nazwa)
Krok szósty
Zamknięcie arkusza Excela
objExcel.Close 'zamyka Excela
Set objExcel = Nothing ' zwalnia zasoby
Tutaj (4kB) jest przykład programu napisanego w Visual Basic 5.0 operującego na Excelu
ProgressBar/opis.htm
|
Ustawia podkreślenie w aktywnej komórce
ActiveCell.Font.Underline = xlUnderlineStyleSingle
Ustawia podkreślenie w komórce A2
Range("A2").Font.Underline = xlUnderlineStyleDouble
Usuwa podkreślenie w aktywnej komórce
ActiveCell.Font.Underline = xlUnderlineStyleNone
Ustawia kursywę w aktywnej komórce
ActiveCell.Font.Italic = True
Ustawia czcionkę Arial CE w aktywnej komórce
ActiveCell.Font.Name = "Arial CE"
Ustawia wielkość czcionki w aktywnej komórce
ActiveCell.Font.Size = 10
Ustawia indeks górny czcionki w aktywnej komórce
ActiveCell.Font.Superscript = True
Ustawia kolor czcionki w aktywnej komórce
ActiveCell.Font.ColorIndex = 45
|
W celu przyspieszenia wykonywania kodu VBA warto zastosować:
|
Jak obliczyć
... liczbę wszystkich komórek w arkuszu
zmienna = Cells.Count
...liczbę wszystkich wierszy w arkuszu
zmienna = Rows.Count
...liczbę wszystkich kolumn w arkuszu
zmienna = Columns.Count
...liczbę otwartych skoroszytów
zmienna = Workbooks.Count
...liczbę arkuszy w skoroszycie
zmienna = Worksheets.Count
...liczbę Modułów w skoroszycie
zmienna = Modules.Count
...liczbę wszystkich kart w skoroszycie
zmienna = Sheets.Count
...liczbę arkuszy typu Wykres w skoroszycie
zmienna = Charts.Count
Jak wybrać
...pojedyńczą komórkę (na przykładzie A1)
...zakres komórek
...kilka komórek (różnych)
...kilka zakresów komórek (różnych)
...komórkę aktywną
...komórkę przesuniętą o 2 wiersze i 1 kolumnę od komórki aktywnej
...komórkę przesuniętą o 2 wiersze i 1 kolumnę od komórki A2
...pierwszy arkusz w aktywnym zeszycie
...arkusz o nazwie "Arkusz1"
...spośród otwartych zeszytów zeszyt o nazwie "Zeszyt1"
...wiersz z aktywną komórką
...kolumnę z aktywną komórką
...kilka kolumn w ciągłym obszarze
...kilka wierszy w ciągłym obszarze
...kilka kolumn w nieciągłym obszarze
...kilka wierszy w nieciągłym obszarze
...ostatnią komórke w danym wierszu
...ostatnią komórke w danej kolumnie
...pierwszą komórke w danym wierszu
...pierwszą komórke w danej kolumnie |
Jak wyświetlić
...zawartość komórki (na przykładzie A1)
(5 różnych sposobów)
Range("A1").Value
Cells(1).Value
Cells.Item(1).Value
Cels(1,1).Value
Cells(1,"A").Value
...formułe z komórki (na przykładzie A1)
(5 różnych sposobów)
Range("A1").Formula
Cells(1).Formula
Cells.Item(1).Formula
Cels(1,1).Formula
Cells(1,"A").Formula
...własny text w tytule zamiast Microsoft Excel
Application.Caption="to tu wstawiamy..."
...własny text w linii statusu
Application.StatusBar="to tu wstawiamy..."
Zatrzymać wyświetlanie okien informacyjnych
Application.DisplayAlerts = False
Uaktualnić wyświetlanie okien informacyjnych
Application.DisplayAlerts = True
Jak wstawić
...własny tekst w komórce (na przykładzie A1)
(10 różnych sposobów)
Range("A1").Formula = "mój tekst"
Cells(1).Formula ="mój tekst"
Cells.Item(1).Formula ="mój tekst"
Cels(1,1).Formula ="mój tekst"
Cells(1,"A").Formula ="mój tekst"
Range("A1").Value = "mój tekst"
Cells(1).Value ="mój tekst"
Cells.Item(1).Value ="mój tekst"
Cels(1,1).Value ="mój tekst"
Cells(1,"A").Value ="mój tekst"
...liczbę (na przykładzie A1)
(10 różnych sposobów)
Range("A1").Formula = 13
Cells(1).Formula =13
Cells.Item(1).Formula =13
Cels(1,1).Formula =13
Cells(1,"A").Formula =13
Range("A1").Value = 13
Cells(1).Value =13
Cells.Item(1).Value =13
Cels(1,1).Value =13
Cells(1,"A").Value =13
...formułę =B1+C4 do komórki A1
(5 różnych sposobów)
Range("A1").Formula = "=B1+C4"
Cells(1).Formula = "=B1+C4"
Cells.Item(1).Formula = "=B1+C4"
Cels(1,1).Formula = "=B1+C4"
Cells(1,"A").Formula = "=B1+C4"
...format komórki w postaci np. ##.##0
Range("A1").NumberFormat = "##.##0"
Inne
Zatrzymać aktualizację zawartości ekranu
Application.ScreenUpdating = False
Wznowić aktualizację zawartości ekranu
Application.ScreenUpdating = True
Wyczyścić zawartość schowka po operacji Copy/Paste
Application.CutCopyMode = False
Wpisać własny text w listwie statusu okna
Application.StatusBar = "To jest właśnie ten text..."
Przywrócić Excelowi prawo do pisania w pasku statusu
Application.StatusBar = False
Zmienić sposób przeliczania formuł w arkuszu
Application.Calculation = xlManual 'przeliczenie ręczne po np przyciśnięciu przyciski F9
Application.Calculation = xlAutomatic 'przeliczenie automatyczna
Zatrzymać wyświetlanie okien informacyjnych
Application.DisplayAlerts = False
Uaktualnić wyświetlanie okien informacyjnych
Application.DisplayAlerts = True
Wywołać otwarcie strony www z poziomu VBA
tu jest przykład w formie pliku xls (linkToWWW.zip 10kB)
Przycisk - ikona w istniejącym pasku narzędzi
Opisuje w jaki sposób umieścić nową ikonę na istniejącym pasku narzędzi, ustawić odpowiedni jego obraz i przypisać makro.
Przycisk - ikona w nowym pasku narzędzi
Opisuje w jaki sposób umieścić nową ikonę na nowym pasku narzędzi, ustawić odpowiedni jego obraz i przypisać makro.
Przycisk - na arkuszu kalkulacyjnym.
Opisuje w jaki sposób umieścić przycisk na arkuszu, zmodyfikować jego właściwości, podpiąć makro pod odpowiednie zdarzenia zwiazane np. z kliknieciem na przycisk.
1
1