Visual Basic szintaktikai összefoglaló

(Forrás: http://www.agt.bme.hu/szakm/oop/vba.htm)

Alkalmazott jelölések

... - az utasításban egyedileg megadandó érték, név 
[...] - opcionális, elhagyható része az utasításnak 
...|... - a megadott értékek közül csak az egyik szerepelhet, több érték is felsorolásra kerülhet nem csak kettő 
Félkövér - félkövér betükkel a Visual Basic alapszavai 
dölt - tetszőlegesen megadható érték, pl. változó neve

Kódolási szabályok

A Visual Basicben az egyes utasításokat külön sorokban helyezzük el. Egy sorban több utasítás is megjelenhet, ha az utasításokat : (kettősponttal) válaszjuk el. Például:
a = 5: b = 4
Az egy sorba írható utasítás hossza nincs korlátozva, de a programunk olvashatósága érdekében nem célszerű a nagyon hosszú utasításokat egy sorban elhelyezni. Egy utasítást több sorra bonthatunk, ha a sor végére _ (aláhúzás) karaktert teszünk. Például:
MsgBox  "Mi újság a Futrinka utcában?" ,, _ 
    "CicaVizió"
A program utasításai közé megjegyzéseket helyezhetünk el. Az ' (aposztróf) karakter után írt szöveget a Visual Basic a sor végéig figyelmen kivül hagyja. Igy az utasítások után is elhelyezhetünk megjegyzéseket, vagy a teljes sort megjegyzésre használhatjuk. Például:
a = b * c  ' ez egy sor végi megjegyzés 
' ez az egész sor megjegyzés
Az egész konstans értékek megadásánál a számot tizes, tizenhatos és nyolcas számrendszerben is megadhatjuk. Például
12 decimális érték 
&Hff hexadecimális érték 
&O177 oktális érték
A Visual Basicben programokban használt nevek maximum 255 karakter hosszúak lehetnek, egyes esetekben a 40 karaktert nem haladhatják meg (form, modul, osztály és kontrol nevek). A névnek betűvel kell kezdődnie, a név nem tartalmazhat szóközt, pontot illetve olyan speciális karaktert, melyet a Visual Basic más célra használ. Célszerű a nevekben csak az angol abc betűit, a számjegyeket és az aláhúzás karaktert használni. A név nem lehet azonos a Visual Basic kulcsszavaival. A Visual Basic kulcsszavai: 
 
Access Alias Any Append As Base
Binary ByRef ByVal Case Cdecl Compare
Date Each Else ElseIf Empty End If
Error Explicit False For Get Global
In Input Is Len Let Lib
Local Lock Loop Me Mid Module
New Next Nothing Null On Option
Optional Output ParamArray Preserve Print Private
Property Public Random Read Resume Seek
Set Shared Static Step String Text
Then Time To True TypeOf Until
Wend WithEvents

Konstansok

A konstansok létrehozásával egy nevet rendelhetünk konkrét értékekhez, segítségükkel a programunkat olvashatóbbá, áttekinhetőbbé tehetjük. A konstansok értékét nem lehet megváltoztatni.
[Private | Public] Const névAs típus = érték
Private - a konstans hatóköre az aktuális egységre terjed ki (modul, eljárás, függvény) 
Public - a konstans az aktuális egységen kivülről is használható 
név - a konstans neve, az angol ABC betűit, számjegyeket és az aláhúzás karakterbő állhat, betűvel kell kezdődnie, max 256 karakter 
típus - a következő típusok egyike: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String, vagy Variant 
érték - a típusnak megfelelő konkrét érték
Például:
Private Const MAX As Integer = 4 
Public Const Pi As Double = 3.1415926 
Const Datum As Date = #1 Jan 93#

Változók

A program során használt input vagy kiszámított értékek tárolását valósíthatjuk meg a változók segítségével. A változók típussal rendelkeznek. A változó típusa meghatározza a változó által tárolható értékek készletét és a velük végezhető műveleteket. A Visual Basicben használható fontosabb változó típusoki:
Boolean - logikai érték True (igaz) vagy False (hamis) 
Byte - előjel nélküli 8 bites érték a 0 és 255 tartományban 
Currency - 64 bites fixpontos szám, négy tizedes jeggyel a -922,337,203,685,477.5808 és 922,337,203,685,477.5807 tartományban 
Date - 64 bites dátum és időpont érték 100 Január 1-től 999 December 31-ig, 0 órától 23óra 59perc 59 másodpercig 
Double - 64 bites lebegőpontos szám 
Integer - 16 bites egész a -32768 és 32767 tartományban 
Long - 32 bites egész 
Single - 32 bites lebegőpontos szám 
String - szövegek tárolására max 64 KByte-nyi szöveg 
Variant - tetszőleges tjpusú értéket tárolhat a felsoroltak közül, a tárolt érték típusát a VarTyp függvénnyel kérdezhetjük le
A változók deklarálását nem teszi kötelezövé a VB, a programhibák könnyebb feltárása érdekében célszerű minden változót deklarálni és a moduljaink elején az Option Explicite utasítást kiadni. Ezután a nem deklarált változó esetén hibaüzenetet kapunk. A változók deklarálását a Dim utasítással végezhetjük el
Dim név [As típus]
Egy Dim utasítással több változót is deklarálhatunk a következő formában
Dim név As típus, név As típus
Vigyázat ha a változó típusát elhagyjuk, akkor variant típusú változót kapunk. Például a következő deklarációban az "a" változó típusa variant lesz és nem egész!
Dim a, b As Integer
A string és szám típusú változók közötti értékadás megengedett, a Visual Basic automatikusan végrehajtja a szükséges konverziót. Például:
Dim str As String 
Dim num As Double

str = "12.45": num = str

num = 3.1415926: str = num

A változók érvényességi köre

A változók különböző érvényességi körrel, élettartammal rendelkezhetnek. Az eljárásokban deklarált (Sub, Function) változók csak abból az eljárásból érhetők el. Ezeket a változókat lokális változóknak nevezzük. Ezek a változók a tartalmukat is elvesztik az eljárásból kilépés után, hacsak a Static kulcsszót nem tesszük a Dim helyére. 
A modul változókat a form, kód vagy osztály modul eljáráin kivül deklarálhatjuk, általában a modul elején helyezik el. Ezek a változók a modul valamennyi eljárásában elérhetők. Ebben az esetben a Dim kulcszót a Private kulcsszóval is helyettesíthetjük. Abban az esetben, ha a modul változóinkat más modulból is szeretnénk elérni, akkor a modul változókat globálissá tehetjük aPublic kulcszó segítségével.
Private a As String  ' modul változó 
Public b As Integer ' globális változó

Sub eljaras () 
Dim x As Double  ' lokális változó 
Static n As Integer  ' az értékét megörző lokális változó 
Dim a As Boolean ' ez a változó elrejti az "a" modul változót az azonos nevek miatt!

Tömbök

Azonos típusú értékek tárolása egy változóban (vektor, mátrix).
Deklarálás:
Dim pont(0 to 2) As Double
Dim pont(2) As Double  ' azonos az elözővel
Az indexek alapértelmezésben 0-tól kezdődnek! 
Tömb elemek használata: pont(0)=12.45 pont(1)=4# pont(2)=0# Több dimenziós tömb: Dim matrix(4,4) As Integer

Dinamikus tömbök

Tömbök a program futása közben átméretezhetők a ReDim utasítás segítségével.

ReDim pont(6) ' átméretezés a tömb korábbi tartalma elveszik
ReDim Preserve a(0 to 20) ' átméretezés a korábbi tartalommegőrzésével

Algoritmus szerkezetek

A Visual Basic-ben megtatálhatók az algoritmikus nyelvekben (Pascal, C, stb.) megszokott elágazások és ciklusok. Nincs feltétlenül szükség a Goto utasítás használatára.

Elágazások, feltételes utasítások

Elágazás logikai feltételek alapján

Egyszerű, egysoros forma

If feltételThen [utasítások] [Else utasítások]

Strukturált forma

If feltétel1 Then ' logikai feltétel melynek értéke igaz (true) vagy hamis (false)

[utasítások] ' ezeket az utasításokat hajtja végre a program, ha a feltétel1 igaz
[ElseIf feltétel2 Then
[utasítások] ... ' ezeket az utasításokat hajtja végre a program, ha a feltétel2 igaz
[Else
[utasítások]] ' ezeket az utasításokat hajtja végre a program, ha a feltétel1 és a feltétel2 is hamis eredményt ad
End If
Példa:
  if a > b then c = a else c = b ' két érték közül a nagyobbat c-be

Többirányú elágazás egy változó értékei alapján

Select Case kifejezés ' a kifejezés értékének megfelelő ágat hajtja végre
[Case értékek ' egy érték, vagy az értékek vesszővel elválasztott felsorolása, vagy n To m alakban megadott intervallum

[utasítások] ...
[Case Else
[utasítások] ' ezt hajtja végre, ha a kifejezés értéke nem szerepel egyik Case után sem
End Select
Példa:
  Select Case i
    Case 1,2,15
      MsgBox "1,2 vagy 15"
    Case 3 To 8
      MsgBox "3 és 8 között"
    Case 9
      MsgBox "Kilenc"
    Case Else
      MsgBox "Ismeretlen érték"
    End Select

Ciklusok

Számlálással vezérelt ciklus

For számláló= kezdőérték To végéerték [Step lépés]
[utasítások]
[Exit For] ' kiugrás a ciklusból a végéerték elérése előtt
[utasítások]
Next [számláló] ' ciklus vége

Példa:
  s = 0
  For i = 1 to 10 ' egytől tízig a számok összege
    s = s + i
  Next

Gyűjtemény minden elemére

For Each elem In csoport ' a csoport minden elemére végrehajtja a ciklusban szereplő utasításokat

[utasítások]
Next [elem]
Példa:
  For Each reteg In ThisDrawing.Layers ' minden réteg bekapcsolása
    reteg.LayerOn = true
  Next

Feltétellel vezérelt ciklus

While feltétel ' a ciklus végrehajtása addig folytatódik, amíg a feltétel igaz

[utasítások]
Wend

További változatok

Do [{While | Until} feltétel]

[utasítások]
Loop ' Exit Do utasítással kiugorhatunk a ciklusból

Hátul tesztelős ciklus

Do

[utasítások]
Loop [{While | Until} feltétel]

Eljárások

Sub eljárások

Sub név ([[ByVal] paraméter [As típus][, ... ]]) ' ByVal az érték szerinti paraméter átadást teszi lehetővé
...
End Sub ' Exit Sub utasítással kiléphetünk az eljárásból

Példa:
Sub csere(a As Double, b As Double) ' két érték cseréje
  Dim w As Double
  w = b: b = a: a = w
End Sub

Függvény eljárások

Function név ([[ByVal] paraméter [As típus][, ... ]]) As típus ' a paraméter lista után megadott típus a visszaadott érték típusa
...
név = kifejezés ' a függvény nevének adott érték lesz a függvény által visszaadott érték
...
End Function

Példa:
  Function faktorialis(ByVal n As Integer) As Integer ' n. faktoriális számítása
    Dim i As Integer, s As Integer
	s = 1
	For i = 1 To n
	  s = s * i
	Next
	faktorialis = s
  End Function