Visual basic, Programowanie VBA


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.
Jeżeli potrzeba to zostaje ona uruchomiona.

nawiasy [] oznaczają że obiekt jest domyślnym dla tej właściwości:


Parametry:

index może przyjmować wartości:

xlMicrosoftWord

xlMicrosoftPowerPoint

xlMicrosoftMail

xlMicrosoftAccess

xlMicrosoftFoxPro

xlMicrosoftProject

xlMicrosoftSchedulePlus

Pzykłady:

Application.ActivateMicrosoftApp(xlMicrosoftWord)


[Application].ActiveDialog

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.

  • Właściwość Application zwraca "Microsoft Excel" dla wszystkich obiektów

  • Właściwość Creator zwraca numer 1480803660 dla wszystkich obiektów. Jest to numeryczny odpowiednik właściwości Application

  • Właściwość Parent zwraca obiekt znajdujący się wyżej w hierarchi 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.

  • Właściwość Application zwraca "Microsoft Excel" dla wszystkich obiektów

  • Właściwość Creator zwraca numer 1480803660 dla wszystkich obiektów. Jest to numeryczny odpowiednik właściwości Application

  • Właściwość Parent zwraca obiekt znajdujący się wyżej w hierarchi 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
1.1. Dlaczego wybrać VBA
1.2. Skąd czerpać wiedzę
2. Srodowisko VBA
2.1. Okno Excela
2.2. Okno Edytora
3. Tworzenie aplikacji
3.1. Projektowanie interface
3.2. Pisanie kodu
3.3. Bezpieczeństwo aplikacji
4. Typy danych
4.1. Typy danych
4.2. Stałe
4.3. Zmienne
4.4. Zasieg stałych i zm.
4.5. Nazwy zmiennych
5. Instrukcje przypisania
6. Operatory
6.1. Arytmetyczne
6.2. Znakowe
6.3. Logiczne
6.4. Porównania
6.5. Kolejność operatorów
7. Instrukcje sterujące
7.1. Instrukcja If...Then
7.2. Instrukcja blokowa If
7.3. Instrukcja If...Then...ElseIf
7.3. Instrukcja Select Case
7.4 Instrukcja Goto
7.5. Instrukcja Switch
8. Pętle
8.1. Pętle For...Next
8.2. Pętle z warunkiem
8.3. Pętle na obiektach
9. Pliki zewnetrzne
9.1. Sekwencyjne
9.2. O dostepie bezpośrednim
9.3. O dostepie binarnym
9.4. Arkusz jako plik danych
10. Obiekty
10.1. Kategorie obiektów
10.2. Wykaz obiektów
11. Dostęp do obiektów
12.
Metody
13.
Właściwości
13.1. Właściwości wspólne
13.2. Właściwości globalne
13.3. Najczęściej używane
14.
Zdarzenia
15. Procedury
16.
Funkcje wbudowane
17.
Funkcje
17.1. Funkcje Excela w VBA
17.2. Funkcje niedostępne jako metody
18. Pola dialogu - wbudowane

18.1. Dialogi VBA
18.2. Dialog MsgBox()
18.3. Dialog InputBox()
18.4. Inne pola dialogu
19. Własne pola dialogu
19.1. Tryb projektowania
19.2. Obiekty pól dialogu
19.2.1. Obiekt UserForm
19.2.2. Obiekty z przybornika
19.2.2. Właściwości obiektów
19.2.3. Zdarzenia w dialogach

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:

  1. Odpowiedniej literatury, dostępnej na polskim rynku księgarskim

  2. Systemu pomocy zaimplementowanemu w MS Excel

  3. Internetu i zamieszczonych tam stron tarktujących o VBA

  4. 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

  5. Z listy dyskusyjnej pl.comp.lang.vbasic - listy zawierające w temacie "VBA" dotyczą Visual Basica dla Aplikacji

  6. ...... 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

Print

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

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

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:

  • rób dodatki kompilowane do postaci xll

  • twórz biblioteki dll

  • pisz i kompiluj aplikację do poziomu exe

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

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

  1. Przejdź do edytora Visual Basic / Narzedzia - Makro - Edytor Visual Basic lub Alt - F11/

  2. Wbierz F2, lub Widok - Przglądarka Obiektów

  3. W spisie Biblitek wybierz Excel

  4. W oknie Klasy Przeglądarki obiektów znajdź Constans

  5. W oknie Składowa 'Constans' poszukaj nazwy odpowiedniej stałej

  6. 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:

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
Dim liczbaPi As Double

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.
(Można ustawić tą właściwość automatycznie korzystając z:
Narzędzia - Opcje - Edytor i zaznaczyć pole "Wymagane deklaracje zmiennych": Całość wykonujemy z poziomu Edytora VBA)

/tu masz obraz powyższej operacji

Tabela poniżej pokazuje zasięg zmiennych w zależności od ich definicji.

Słowo
kluczowe

Miejsce
deklaracji

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:
2 = 2 => True
2 = 3 => False
"Napis" = "Napis1" => False

<>

różne od

zwraca True gdy wartości są różne np:
2 <> 2 => False
2 <> 3 => True
"Napis" <> "Napis1" => True

>

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 ("").

0x08 graphic

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
alternatywa

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
poleceni
e
.......
polecenie
End If

End If

If warunek warunek Then polecenie

Działanie tej struktury jest następujące:

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
polecenie 1
.............
polecenie n
End If

Działanie tej struktury jest następujące:

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]
[instrukcje]
[Exit For]
[instrukcje]
Next [licznik]

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
koniec > początek

Jeżeli krok <=0 : pętla wykona się (początek-koniec)/|krok| razy pod warunkiem że
koniec < początek

Przykład:

For i = 1 to 10 Step 2
MsgBox
"Aktualna wartość licznika wynosi"+ str(i)
Next
i

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 ...
Loop

Sprawdza warunek na początku

Wykonuje pętle jeżeli warunek jest prawdziwy

Do Until ...
Loop

Sprawdza warunek na początku

Wykonuje pętle jeżeli warunek jest nieprawdziwy

Do ...
Loop While

Sprawdza warunek na końcu

Wykonuje pętle jeżeli warunek jest prawdziwy

Do ...
Loop Until

Sprawdza warunek na końcu

Wykonuje pętle jeżeli warunek jest nieprawdziwy

While ...
Wend

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
For i = 1 to 9
n = n * i
Next i

n = 1
i = 1
While i <= 9
n = n * i
i = i +1
Wend

n = 1
i = 1
Do While i <= 9
n = n * i
i = i +1
Loop

n = 1
i = 1
Do Until i > 9
n = n * i
i = i + 1
Loop

n = 1
i = 1
Do
n = n * i
i = i +1
Loop While i <= 9

n = 1
i = 1
Do
n = n * i
i = i +1
Loop Until i > 9

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
.
.
Exit For
.
.
Next element

Pętla For Each dla tablicy

Składnia

For Each element In tablica
.
.
Exit For
.
.
Next element

Dim Element
Dim Tablica As Array
For Each Element In Tablica

Next 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:

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

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-
tryczne

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:

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:

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

  • Operacje na

  • Czcionkach

  • Obramowaniu komórki

  • wypełnieniu komórki

  • Jak . . .

  • Przyspieszyć makro

  • Obliczyć

  • Wybrać

  • Wyświetlić

  • Wstawić...

  • inne

  • Jak zrobić . . .

  • przycisk z makrem

  • automatyczny ekran powitalny przy otwarciu

  • pasek postępu

  • indywidualny komentarz (własny kształt)

ProgressBar/opis.htm

  • Jak rozwiązać . . .

  • generator liczb losowych

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ć:

  1. Dobrać odpowiednio typy zmiennych i zawsze je zadeklarować.
    najlepiej użyć: Option Explicit ustawionego na stałe

  2. Używać adresowania w postaci R1C1

  3. Zatrzymać aktualizację zawartości ekranu
    Application.ScreenUpdating = False

  4. Zatrzymać przeliczanie arkusza
    Application.Calculation = xlManual 'przeliczenie ręczne po np przyciśnięciu przyciski F9

  5. Zatrzymać obsługę zdarzeń
    Application.EnableEvents = False

  6. Używać With...End With przy obiektach
    With Range("A1")
    .Value = 100
    .Font.Bold = True
    End With

  7. Używać VbNullString zamiast ""
    PustyText= VbNullString

  8. Uzywać instrukcji przypisania zamiast Copy
    zamiast:
    Sheet1.Range("A1:A200").Copy
    Sheet1.Range("A1:A200").PasteSpecial xlPasteValues

    stosuj:
    Sheet1.Range("A1:A200") = Sheet1.Range("A1:A200").Value

  9. Zwalniać nieużywane przypisania używając Nothing
    deklaracja:
    Dim mojObiekt as Worksheet
    Set mojObiekt = Sheet1
    zwolnienie zarezerwowanej pamięci
    Set mojObiekt = Nothing

  10. Upraszczać warunki w if..else..end if
    zamiast
    If i = 5 Then
    wynik = True
    Else
    wynik = False
    End If

    stosuj
    Dim wynik As Boolean
    Dim i As Integer

    wynik = (i = 25)

  11. Używać Not zamiast przypisania
    zamiast
    If wynik <> True Then
    wynik = True
    End If

    stosuj
    Dim wynik As Boolean
    wynik
    = Not wynik

  12. Unikać pętli

  13. Unikać rozbudowanych instrukcji Select case

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)
(5 różnych sposobów)
Range("A1").Select
Cells(1).Sele
ct
Cells.Item(1).Select
Cels(1,1).Select
Cells(1,"A").Select

...zakres komórek
(2 różne sposoby)
Range("A1:A5").Select
Range(Cells(1,1),Cells(5,1)).Select

...kilka komórek (różnych)
Range("A1","A5","Z320").Select

...kilka zakresów komórek (różnych)
Range("A1:A5","A15:D15","Z320").Select

...komórkę aktywną
Application.ActiveCell

...komórkę przesuniętą o 2 wiersze i 1 kolumnę od komórki aktywnej
Activecell.Offset(2,1).Activate

...komórkę przesuniętą o 2 wiersze i 1 kolumnę od komórki A2
(2 różne sposoby)
Range("A2").Offset(2, 1).Activate
Cells(2, 1).Offset(2, 1).Activate

...pierwszy arkusz w aktywnym zeszycie
Sheets(1).Activate

...arkusz o nazwie "Arkusz1"
Sheets("Arkusz1").Activate

...spośród otwartych zeszytów zeszyt o nazwie "Zeszyt1"
Windows("Zeszyt1").Activate

...wiersz z aktywną komórką
(2 różne sposoby)
Selection.EntireRow.Select
ActiveCell.EntireRow.Select

...kolumnę z aktywną komórką
(2 różne sposoby)
Selection.EntireColumn.Select
ActiveCell.EntireColumn.Select

...kilka kolumn w ciągłym obszarze
Columns("A:C").Select

...kilka wierszy w ciągłym obszarze
Rows("1:5").Select

...kilka kolumn w nieciągłym obszarze
Columns("A:C","E:E").Select

...kilka wierszy w nieciągłym obszarze
Rows("1:5","6:6").Select

...ostatnią komórke w danym wierszu
ActiveCell.End(xlRight).Select

...ostatnią komórke w danej kolumnie
ActiveCell.End(xlDown).Select

...pierwszą komórke w danym wierszu
ActiveCell.End(xlLeft).Select

...pierwszą komórke w danej kolumnie
ActiveCell.End(xlUp).Select

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
C
els(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



Wyszukiwarka

Podobne podstrony:
Makra programowanie w Visual Basic
Mastering Visual Basic NET Database Programming
Visual Basic Platforma programistyczna, Studia i nauka, Visual Basic
Kurs Visual Basic dla początkujących, Języki programowania
programowanie w Visual Basic, Pomoce naukowe, studia, informatyka
Visual Basic i DirectX Programowanie gier w Windows
Visual Basic i DirectX Programowanie gier w Windows vbdirx
Visual Basic 2005 Zapiski programisty vb25np
Programowanie obiektowe w Visual Basic NET dla kazdego povbnd
Programowanie obiektowe w Visual Basic NET dla kazdego 2
Visual Basic i DirectX Programowanie gier w Windows vbdirx
Visual Basic 2005 Zapiski programisty vb25np
Visual Basic 2005 Programowanie 2
Visual Basic 2005 Programowanie vb25pr
Programowanie obiektowe w Visual Basic NET dla kazdego 2

więcej podobnych podstron