programowanie w Visual Basic, Pomoce naukowe, studia, informatyka


Podział języków programowania:

  1. Języki niskiego poziomu (asembler)

  2. Języki wysokiego poziomu (Basic, Cobol, Fortran, C, C++, Pascal, Visual Basic)

  3. Języki poziomu aplikacji (Excel VBA, Word VBA, Power Point VBA)

BASIC - Beginner'a All-Purpose Symbolic Instruction Code (Wszechstronny Kod Instrukcyji, Symboliczny, dla Początkujących)

Alt + F11 - przejście Edytor VBA / Excel

Eksplorator projektów:

MAKRO - ciąg poleceń zarejestrowanych przez rejestratora makr w wyniku działań użytkownika aplikacji lub stworzonych manualnie w edytorze Visual Basic

TYPY ADRESOWAŃ

Adresowanie względne - makro wykonuje polecenia w dowolnie wybranej komórce arkusza

Adresowanie bezwzględne - makro wykonuje polecenia w komórkach w których było zarejestrowane

OBJEKT W VISUAL BASIC

OBJEKT RANGE

Ogólny schemat odwołań do obiektu:

Obiekt.właściwość

Obiekt.metoda

PRZYKŁĄD

ZMIANA WARTOŚCI KOMÓRKI

Range(“C5”).Value = 7

Activecell.Font.Name = “Arial”

Activecell.Font.Bold = True

ODCZYTYWANIE WARTOŚCI KMÓRKI

Zmienna = Range(“A6”).Value

PRZENIESIENIE (rozdzielenie na 2 linijki)

&_ tekst

_ instrukcje

Kiedy możemy:

ZAZNACZANIE KOMÓREK

WPISYWANIE DANYCH

KOPIOWANIE KOMÓREK

PRZESUWANIE KOMÓREK

USUWANIE KOMÓREK

ZMIENNE

Nazwy składają się z liter, cyfr i znaków z wyjątkiem: , # $ % & @ !

Bez zarejestrowanych słów

TYPY DANYCH

Boolean, Byte, Integer, Long, Single, Double, Currency, Decimal, Date, String, Object (umożliwia dostęp do dowolnego objektu), Array, Variant, Variant

DEKLARACJE ZMIENNYCH

Np.

Przykład

Dim nazwisko As String

Dim data_rozpoczecia As Date

Dim ile_left As Byte

Nazwisko = “Kowalski”

Data_rozpoczęcia = # 01/10/2000 #

Ile_left = Year (Now())- Year(data_rozp)

MsgBox “Osoba” + nazwisko + “studiuje” + Ile_left + “lat”

SKRÓCONA DEKLARACJA

String $

Integer %

Long &

Single !

Double #

Curray @

Przykłąd

Dim znaki $

Dim i %

Dim x #

Przykład

Dim x As Integer

Dim y %

Range(“A1”).Formula = ”WYNIK”

X = 5

Y = 3

With Range(“A2”)

.Value = “= 3 * 5”

.ColorIndex = 5

End With

ZMIENNE STATYCZNE

Static x

ZMIENNE OBIEKTOWE

Dim dane As Object

Set dane = _

Worksheets(„Arkusz1”).Range(Cells(1,1), Cells(5,5))

With dane.Interior

.ColorIndex = 5

.Pattern = x(Solid)

End With

STAŁE

Początek i koniec programu:

Sub

...

End Sub

FUNKCJE (!!!)

Function nazwa (By Val x, By Ret y)

End Function

PRZYKŁAD

Public Function suma_1 (By Ref a, By Val b)

A = a * 2

B = b * 2

Suma_1 = a + b

End Function

Private Sub CommandButton 3_Clik()

Dim x,y As Integer

X = 2

Y = 5

Range(“A1”).Value = suma_1(x,y)

Range(“A2”).Value = x

Range(“A3”).Value = y

End Sub

ARGUMENTY OPCJONALNE

Public Function suma_1(a, b, Optional c)

If Is Missing (c) Then

C = 0

Suma_1 = a + b + c

End Function

KOMUNIKAT MsgBox

MsgBox komunikat, argumenty

USTAWIENIA PRZYCISKÓW

USTAWIENIA IKON

WARTOŚCI ZWRACANE PRZEZ MsgBox

OK. VbOK 1

Cancel VbCancel 2

Abort 3

Retry 4

Ignore 5

Yes 6

No 7

FUNKCJE InputBox

InputBox komunikat

Komunikat = „Podaj PIN”

OPERATORY PORÓWNANIA

= <> > < >= <= is [identyczne obiekty] like [równe, zgodne ze wzorem]

OPERATORY LOGICZNE

AND OR NOT

STRUKTURY DECYZYJNE

If warunek Then
instrukcja_1
instrukcja_2
End If

OPERATORY LOGICZNE

PRZYKŁAD: instrukcja If i Else

If Range(„A1”).Font.ColorIndex = 5 Then Range(„A1”).Font.ColorIndex = 10

Else Range(“A1”).Font.ColorIndex = …

Zmienia kolor na 5 i 10

PRZYKŁAD:

Data = InputBox(„Podaj datę w formacie 23/10/2003)

DataF = WeekDay(Date(data))

If Data F >= 2 And DataF <=6 Then Msg Box “Dzień powszedni”

Else MsgBox “Weekend”

End If

WeekDay - zwraca numer

WARTOŚCI FUNKCJI WEEKDAY

Vb Sunday 1

Vb Monday 2

Vb Tuesday 3

Vb Wednesday 4

Vb Thursday 5

Vb Friday 6

Vb Sunday 7

STRUKTÓRA DECYZYJNA

If warunek Then
instrukcja_1

Else If warunek_2 Then

instrukcja_2

Else If warunek_3 Then
instrukcja_3

Else instrukcja_4

End If

STRUKTURA SelectCase

Select Case wyrażenie

Case wartosc_1

Instrukcja_do_wykonania

Case wartosc_2

Instrukcja_do_wykonania

Case wartosc_3

Instrukcja_do_wykonania

Case Else

Instrukcja_do_wykonania

End Select

Select Case liczba

Case Is >= 20

MsgBox „Liczba większa lub równa 20”

Case 19

MsgBox „Liczba 19”

Case If <=11

MsgBox „Liczba mniejsza lub równa 11”

Case Else

MsgBox „Liczba w przedziale <12;18>”

End Select

Select Case liczba

Case 1 To 20

MsgBox „Liczba w przedziale <1;20>”

Case 21 To 30

MsgBox „Liczba w przedziale <21;30>”

Case Else

MsgBox „Liczba poza przedziałem <1;30>”

End Select

Select Case liczba_1, liczba_2, liczba_3

Case 1 To 20

MsgBox “Liczba w przedziale <1;20>”

Case 21 To 30

MsgBox „Liczba w przedziale <21;30>”

Case Else

MsgBox „Liczby poza przedziałem <1;30>”

End Select

PĘTLA

Do While warunek

Instrukja_1

Instrukja_2

Instrukja_3

[pętla wykonuje się dopóki spełniony jest warunek]

Przykład

Dim Stop Time

Stop Time = Now + TimeValue(“00:00:05”)

Do While Now < StopTime

Application.DisplayStatusBar = Time

Application.StatusBar = Now

Loop

Application.DisplayStatusBar = False

[wyświetla czas przez 5 sekund]

Do

Instrukcja_1

Instrukcja_2

Instrukcja_3

Loop While warunek

[bez względu na warunek czy na wartość log. 0 lub 1 to co najmniej raz zostanie wykonane]

Do until warunek

Instrukcja_1

Instrukcja_2

Instrukcja_3

Loop

[dopóki warunek nie jest spełniony wykonywane są instrukcje]

Do

Instrukcja_1

Instrukcja_2

Instrukcja_3

Loop until warunek

Przykład

Do until Is Empty(ActiveCell)

ActiveCell.Font.ColorIndex = 5

ActiveCell.Offset(1,0).Select

Loop

Do While ActiveCell<>11 [ <- nie jestem pewien czy tu ma być 11]

ActiveCell.Font.ColorIndex = 5

ActiveCell.Offset(1,0).Select

Loop

(sprawdza czy komórka jest pusta)

PĘTLA For_Next

For i = start To end <[step liczba]

Instrukcja_1

Instrukcja_2

Instrukcja_3

Next [i]

PETLA For Each … Next

For Each element In grupa

Instrukcja_1

Instrukcja_2

Instrukcja_3

Next [Element]

Element - nazwa zmiennej przetrzymującej nazwę elementów kolekcji (przetrzymującej nazwę obiektów)

Grupa - nazwa kolekcji (WorkBooks, WorkSheets, Range(„A1:A25”)

Przykład

Dim arkusz As WorkSheets

Application.Display Alerts = False

WorkBooks.Add

WorkSheets(“Arkusz2”).Select

For Each arkusz In WorkSheets

ActiveWindow.SelectedSheets.Delete

Next arkusz

WCZESNE OPUSZCZANIE PĘTLI

Exit For

Exit Do

Przykłąd

Dim kom As Range

For Each kom In Range(„A1:Z25”)

If kom.Value = “ABC” Then

Kom.Value = “BEF”

Else

Exit For

End IF

Next kom

TABLICE

Tablica - rodzaj zmiennej reprezentującej zbiór wartości mających określony typ (integer, string, itp). Indeksowana grupa zmiennych o tej samej nazwie

Deklaracja tablic

Dim lista_osob (35) As String

Dim id (5) As Integer

Dim tablica_dwuwymiarowa (5,7) As String

Option Base 0 - tablica indeksowana od 0

Option Base 1 - tablica indeksowana od 1

Dim nazwisko (5 To 10) As String - 6 elementowa tablica

Przykład

Dim nazwisko (1 to 3) As string

Nazwisko(1) = “Kowalski”

Nazwisko(2) = “Nowak”

Nazwisko(3) = „Wiśniewski”

TABLICA STATYCZNA

TABLICA DYNAMICZNA

Dim numer( ) As Integer

ReDim numer(5) - rezerwowanie [po???] dla 6 zmiennych typu integer

ReDim Preserve numer(20)

Array

Umożliwia worzenie tablic w trakcie kodu programu bez wcześniejszej deklaracji (typ Variant)

Dim Miasta as Variant

Miasta = Array (“Warszawa”, “Kraków”, “Gdańsk”)

Is Array

Umożliwia sprawdzenie czy dana zmienna jest tablicą (True, False)

Erase

Cbound Ubound

Zwracają liczby całkowite,pzedstawiające dolny i górny zakres tablicy

Dim Miasto As

...

MsgBox Cbound (Miasta)

Dim tablica

...

ParamArray

Function dodaj (ParamArray liczby( )) As Integer

Dim suma As Integer

Dim liczba As Integer

For Each liczba In liczby

Suma = suma + liczba

Next

Dodaj = suma

End Function

PLIKI I FOLDER

CuroDir - zwraca nazwę bieżącego katalogu

CuroDir(„C:\”)

Name - zmienia nazwę pliku dyskowego folderu

Name stara_ścieżka As nowa_ścieżka

Np. Name (c:\abc.txt) As (c:\xyz.txt)

Dir - sprawdza obecność pliku dyskowego, folderu

Dir [(nazwa_scieżki [atrybuty])]

Przykład

Nazwa_pliku = Dir(„c:\”, vbHidden)

Do While Nazwa_pliku <> ” ”

Nazwa_pliku = Dir

Loop

Atrybuty

VbNormal 0 zwykły

VbHidden 2 ukryty

VbSystem 4 systemowy

VbVolume 8 etykieta dysku

VbDirectory 16 katalog, folder

Symbole wieloznaczne

? - jeden znak

* - wiele znaków

FileDateTime - funkcja sprawdza datę i czas utworzenia pliku lub jego ostatnią modyfikację

FileDateTime („C:\autoexec.bat”)

If DataValue(FileDataTime(C:\abc.txt)) < Current Date Then

MsgBox “W dniu dzisiejszym plik nie był modyfikowany”

End If

Filelen - zwraca długość pliku w bajtach

Filelen(nazwa_ścieżki)

Getattr - sprawdza atrybuty pliku

SetAttr - ustawia atrybuty pliku

Atrybuty zwracane przez f. GetAttr

VbNormal 0 zwykły

VbReadOnly 1 tylko do odczytu

VbHidden 2 ukryty

VbSystem 4 systemowy

VbDirectory 16 katalog, folder

VbArchive 32 plik zmieniony od ostatniego zapisu kopii zapasowej

Przykłąd

Dim atrybut As Integer

Atrybut = GetAttr(“C:\autoexec.bat”)

If atrybut And VbNormal Then

MsgBox “Plik zwykły”

SetAttr „C:\autoexec.bat”, VbHidden, VbReadOnly

Chdir - zmienia katalog

ChDir nazwa_ścieżki

ChDrive - zmiana dysku bieżącego

ChDrive dysk

ChDrive „D”

Mdir - zakładanie katalogu

Rdir - usówanie katalogu

Mdir nazwa ścieżki

Rdir nazwa ścieżki

FileCopy - kopiowanie pliku

FileCopy source, destination

Kill - usuwanie pliku

Kill nazwa_ścieżki

RODZAJE DOSTĘPU DO PLIKÓW

Dostęp sekwencyjny (porównane do kasety magnetofonowej przewijanej do momentu zwolnienia)

Dostęp swobodny - płyta CD, wskazujemy na utwór bezpośrednio wybierając numer utworu

Otwieranie pliku:

Open nazwka_ściezki For tryb [Acces dostep] [blokada] As [#] numer_pliku [len = długość_rekordu]

Nazwa_ścieżki - ścieżka dostępu do pliku w raz z jego nazwą

Tryb - określa cel otwarcia pliku

Pliki sekwencyjny mogą być otwarte w 1 z 3 trybów

Input - do odczytu

Output - do zapisu z wymazaniem danych z pliku

Append - do zapisu danych na końcu pliku bez wymazywania danych

Acces - określa tryb dozwolonych operacji na plikach

Read - odczyt

Write - zapis

ReadWrite - odczyt i zapis

Blokada - okeśla operacje na pliku dozwolone dla innych programów

Shared

Lock Read

Lock Write

Lock ReadWrite

Numer_pliku - liczba z zakresu 1-511 służy do jednoznacznej identyfikacji pliku w kolejnych odwołaniach

Funkcja FreeFile - zwraca wolny numer pliku

Długość_rekodru - ilość znaków lub długość rekordu w bajtach

Np. Open „abc.txt” For Input As #1 [As #1 - identyfikuje plik abc.txt]

Częściowe we zawartości pliku sekwencyjnego liczone linia po linii

LineInput # numer_pliku, nazwa_zmiennej

(nazwa_zmiennej musi być typu Variant lub String)

Przykład

Dim wiersz As String

Open “C:\abc.txt” For Input As #1

Do While Not EOF(1) -> dopisanie na końcu pliku

Line Input #1,wiersz

MsgBox wiersz

Loop

Close(1)

Czytanie zawartości pliku sekwencyjnego znak po znaku:

Input (liczba, # numer_pliku)

Liczba - określa liczbę znaków do odczytu

Np.:

Dim znak As String

Dim i As Integer

Open “C:\abc.txt” For Input As #1

I = 0

Do While not EOF(1)

Znak = input(1, #1) <- wyraz z 1 pliku

If znak = „A” then

I = I + 1

Loop

MsgBox “Plik zawiera” & I & “znaków A”

Close(1)

Czytanie zawartości całego pliku sekwencyjnego:

Dim wiersze As String

Wiersze = Input (LOF (1), #1) [LOF - dlugość pliku]

Czytanie pliku sekwencyjnego

Input # numer_pliku, lista_zmiennych

BPE4736, 1500, 1998

BPA2734, 650, 1990

BPB 8974, 2000, 2002

Np.

Dim nazwa As String, pojemnosc As String

Dim rok As String

Open “C:\auto.txt” For Input As #1

Do While #1, nazwa, pojemnosc, rok

MsgBox nazwa

Otwarcie pliku sekwencyjnego w celu zapisu

Open „C:\abc.txt” For Output #1

Open „C:\abc.txt” For Append #1

Zapisywanie pliku sekwencyjnego

Write # nr_pliku, lista_zmiennych

Np.:

Dim nazwisko As String, imie As String

Dim data_ur As Date

Open “C:\dane.txt” For Output As #1

Nazwisko = “Kowalski”

Imie = “Jan”

Data_ur = # 03/05/1980 #

Write #1, nazwisko, imie, data_ur

Close(1)

„Kowalski”, „Jan”, # 03/05/1980 # <- wygląd

...

Print #1, nazwisko, imie, data_ur

Close(1)

Kowalski Jan 03/05/1980 <- wygląd

Np.:

Print #1, Tab(5)nazwisko, Tab(2)imie, Tab(30)data_ur

Print #1, Spac(5)naziwsko, Spac(20)imie, Spac(30)data_ur

Pliki o dostępie swobodnym

Typ dane_osobowe [zdefiniowany samodzielnie typ danych]

Imie As String *10

Nazwisko As String *20

End Type

Np:

Dim dane As dane_osobowe

Dim rekord As double

Dim temp_str As String

Rekord = 1

Open “dane.elc” For Random As #1 Len=Len(dane)

Do

Temp_str = InputBox (“Podaj nazwisko”)

If temp_str = “ “ then Exit Do

Dane.nazwisko = temp_str

Temp_str = InputBox (“Podaj imie”)

If temp_str = “ “ then Exit Do

Dane.imie = temp_str

Put #1 rekord, dane

Rekord = rekord + 1

Loop untill temp_str = „ „

Przykład

Put #1, rekord, dane - zapisywanie

Get #1, rekord, dane - pobieranie

Seek #1, nr_rekordu - ustawia

Pliki binarne

Dim zmienna As String *5

Get#1, Nr_bajtu, zmienna

Put #1

OKNA DIALOGOWE I FORMULARZE

Application.Dialogs(stała).Show

Nowy xlDialogNew

Otwórz xlDialogOpen

Zachowaj jako xlDialogSaveAs

Ustawienia strony xlDialogPageSetup

Drukuj xlDialogPrint

Czcionka xlDialogFont

Label

Umożliwia dodawanie dowolnego tekstu do formularza. Służy do dodawania podpisów, tytułów, nagłówków. Właściwości : Caption - przypisywanie tekstu

TextBox

Umożliwia + lub pobieranie tekstu do formularza służy do wpisywania licz, tekstu, formul

Właściwości:

Frame

Umożliwia wizualne uporządkowanie obiektów formularza

Option button

Umożliwia wybranie jednej wśród wielu opcji. Jest to pr. Przycisk (Podobne jak Radio Button w Delphi)

Check Box

Pole wyboru służące do włączanie lub wyłączania danej opcji

Toggle button

Przełącznik wartości zmiennej Value = True . Odwzorowuje wciśnięty przycisk

List box

Lista wartości

Add Item - dodaje wartość do listy

Row Source - wskazuje źródło wyświetlanych wierszy

Column Count -

Column Head -

Multi Select -

Combo box

Połączenie pola text i pola listy

Scroll bar

Pasek przewijania

Wartość paska przewijania określa Value określa górna i dolna granica, wartości odpowiednio Max i Min.

Spin button

Pokrętło podobne jak scroll bar

Image

Pozwala umieścić obszar w formularzu dowolne pliki: BMP, CUR, GIF, ICO, JPG, WMF

Multi page control

Format wyświetla serię zakładek z których każda stanowi oddzielną stronę

Top strip control

Jedna zakładka

Ref Edit

Umożliwia zaznaczenie zakresu [k???em] w arkuszu i przekazać zaznaczenie do procedury VBA

Kolekcja

Obiekt zawierający zestaw powiązanych ze sobą obszarów

Klasa

Definicja obszaru, obejmująca jego nazwę, właściwości, metody i zdarzenia

Szablon, z którego tworzy się obiekty, tzw. instancje klasy

Instancja

Obiekt utworzony z klasy, która zawiera jego definicje

Tworząc instancję klasy tworzy się nowy obiekt mający cechy zdefiniowane przez klasę

Moduł klasy

Zawiera definicję klasy oraz jej właściwości, metody i zdarzenia. Procedury zapisane w module klasy stają się właściwościami i metodami obiektu

Moduł standardowy

Zawiera procedury Sub Function, które są dostępne dla innych procedur VBA i nie są związane z innymi obiektami

Formularze

Zawiera instrukcje VBA dla wszystkich procedur i zdarzeń, które występują w określonym formularzu lub jego...

Zdarzenie

Akcja rozpoznawana przez obiekt, dla której można zdefiniować odpowiednie zdarzenia powodowane są działaniem użytkownika, dział systemu

Procedura zdarzeń

Procedura wykonywana automatycznie w odpowiedzi na zdarzenie zainicjowane przez użytkownika i instrukcje programu lub systemu

TWORZENIE

Kolekcji obiektów

Dim nazwa_kolekcji As New Collection

Dodawanie elementów do kolekcji

Nazwa_kolekcji.Add item, key, before/after

Item - wyrażenie dowolnego typu określające element dodawany do kolekcji

Key - unikatowy ciąg znaków identyfikujący dany element kolekcji

Before

After

Usuwanie elementów

Nazwa_kolekcji.Remove item

Przykład

Do While kolekcja.count > 0

Kolekcja.Remove index := 1

Loop

For Each element In Kolekcja

ID = 1

Czy usunąć element tak/nie

If tak Then

Kolekcja.Remove Index := ID

Else

ID = ID + 1

End If

Tworzenie własnych klas

  1. Tworzenie modułu klasy

  2. Deklarowanie zmiennych

  3. Pobieranie i ustawienie właściwości obiektu

  4. Tworzenie metod obiektu

  5. Procedury zdarzeń

Deklaracja zmiennych

Private c_imie As String

Private c_nazwisko As String

Private c_id As Integer

Pobieranie i ustawianie właściwości obiektu

Property Let ustawia wartości właściwości

Property Get zwraca wartości właściwości

Property Set ustawia odwołanie........

Private C_imie As String

Private C_nazwisko As String

Private C_ID As Integer

Property Let Nazwisko (N As String)

C_Nazwisko = N

End Property

Property Get Nazwisko () As String

Nazwisko = C_nazwisko

End Property

Przykład

Dim dane As New moja_klasa

Dim Nazwisko As String

Private Sub CommandButton1.Clik()

Nazwisko = dane.Nazwisko

End Sub

Private Sub CommandButton2.Click()

Nazwisko = “Kowalski”

Dane.Nazwisko = Nazwisko

End Sub

Tworzenie metod obiektów

Procedury zdarzeń w klasie modułu

Obiekty tworzone przez użytkownika Reagują na dwa zdarzenia:

Zdarzenie Initialize występuje podczas tworzenia nowej instancji klasy

Dim dane As New moja_klasa



Wyszukiwarka