RAD SA STRINGOVIMA u VBA - Kontrola toka
programa u VBA
Za bolje razumijevanje dijela ovog tutorijala
prije čitanja pogledajte link
KODNE STRANICE i uočite kodne brojeve za
određeni znak, pogotovo za naša slova (Č, Ć, Ž, Š,
Đ)
Pored numeričkih podataka, Excel vrlo često radi
sa stringovima i posjeduje veliki broj funkcija za
njihovu obradu. VBA također posjeduje veliki broj
korisnih funkcija za obradu stringova. Već smo
vidjeli da VBA može da radi stringovima fiksne i
promjenjive dužine. Ukoliko se u deklariranju
stringa navede i njegova dužina, dobivamo string
fiksne dužine. U suprotnom, ako se ne navede dužina,
dobivamo string promjenjive dužine. Uočite primjer
deklariranja stringa fiksne dužine
S1, koji ima 40
znakova, i stringa S2 promjenjive dužine.
Dim S1 as String * 40
Dim S2 as String
U tablici ispod prikazan je spisak korisnih
funkcija za manipuliranje stringovima u VBA.
FUNKCIJA |
OPIS |
Asc(string) |
Vraća ANSI kod prvog znaka u stringu "string".
Npr: Asc("A12")
vraća broj 65. (broj u kodnoj stranici
1250-Latin) |
AscW(string) |
Vraća Unicode kod prvog znaka u stringu
"string"
Npr: AscW("Žarko")
vraća broj 381. (broj u kodnoj stranici
1250-Latin) |
Chr(kodznak) |
Vraća znak koji odgovara ANSI kodu "kodznak".
Npr: Chr(65)
vraća znak "A". (znak u kodnoj stranici
1250-Latin kojem odgovara broj) |
ChrW(kodznak) |
Vraća znak koji odgovara Unicode kodu "kodznak"
Npr: ChrW(382)
vraća znak "ž". (znak u kodnoj stranici
1250-Latin kojem odgovara broj) |
Len(string) |
Vraća broj znaka u stringu "string".
Npr: Len("žabac&komarac")
vraća broj 13. (broj znakova između
navodnika) |
Str(broj) |
Konvertira broj "broj" u string.
Npr: Str(412.41)
vraća string "412.41". |
Val(string) |
Vraća broj sadržan u stringu "string".
Čitanje broja započinje s lijeva i završava
se kad se naiđe na prvi brojevni znak.
Funkcija Val prepoznaje točku kao decimalni
separator, ali ne i zarez, ignorira tab
znakove i blanko znake.
Npr:
Val("301*44")
vraća broj 301.
Val("301.1*44")
vraća broj 301.1
Val("301..1*44")
vraća broj 301 |
InStr(string1,string2) |
Vraća poziciju prve pojave stringa
"string1" u stringu "string2". |
LCase(string) |
Vraća string kod koga su sva velika
slova konvertirana u mala, a ostali znaci su
neizmijenjeni.
Npr: LCase("#A1G2")
vraća "#a1g2" |
UCase(string) |
Vraća string kod koga su sva mala slova
konvertirana u velika, a ostali znaci su
neizmijenjeni.
Npr: UCase("*b1c2")
vraća "*B1C2" |
Left(string,duzina) |
Vraća string koji se sastoji od duzina
znaka stringa "string" gledano sa lijeva.
Npr: Left("Dobar
dan",4) vraća
"Doba" |
Right(string,duzina) |
Vraća string koji se sastoji od "duzina"
znaka stringa "string" gledano sa desna.
Npr: Right("Dobar
dan",4) vraća "
dan" |
Mid(string,start,duzina) |
Vraća string koji se sastoji od "duzina"
znaka stringa "string" počevši od znaka čija
je pozicija start.
"duzina" je opcionalan argument i ako se ne
navede ide se do kraja stringa.
Npr:
Mid("Program",2,4)
vraća "rogr"
Mid("Program",2)
vraća "rogram" |
LTrim(string) |
Eliminira razmake (blanko znake) kojima
počinje string "string".
Npr: LTrim(" Makro")
vraća "Makro" |
RTrim(string) |
Eliminira razmake (blanko znake) kojima
se završava string "string"
Npr: LTrim("Makro ")
vraća "Makro" |
Trim(string) |
Eliminira razmake (blanko znake) kojima
počinje i završava string "string"
Npr: Trim(" Makro ")
vraća "Makro" |
StrComp(string1,string2,nacin) |
Uspoređuje stringove "string1"
i "string2" i
vraća 0 ako su jednaki, -1 ako je "string1"
manji od "string2"
i 1 ako je "string2"
manji od "string1"
.
"nacin"
predstavlja način usporedbe stringova i može
biti binaran (nacin=0
=≫ pravi se razlika između velikih i malih
slova) i tekstualan (nacin=1
=≫ ne pravi se razlika između velikih i
malih slova). Ako se "nacin" ne navede,
podrazumijevano je binarna usporedba.
Npr:
StrComp("VBA","vba",0)
vraća -1
StrComp("VBA","vba",1)
vraća 0 |
Za sve gore spomenute funkcije koje vraćaju "string",
vraćeni "string" je tipa
Variant. Ukoliko želimo da string bude
tipa "String", potrebno
je na ime funkcije nadovezati znak
$. Tako će, na
primjer, ekvivalent funkcije
Lcase koji vraća String
tip biti Lcase$. Za
očekivati je da se, pošto string u suštini
predstavlja niz znakova, pojedinim znacima stringa
može pristupiti navođenjem pozicije znaka u malim
zagradama, kao što se radi kod brojevnih
(numeričkih) nizova. Međutim, kod VBA to nije
slučaj. Pristupanje znacima stringa, kao i njihova
izmena, se vrši funkcijom Mid,
kao što je prikazano u prethodnoj tablici. Na
primjer, uputom Mid(S,1,3) =
"123" bi se zamijenila prva tri znaka
stringa S sa stringom "123".
Osim sa funkcijom StrComp,
stringovi se mogu usporediti i operatorom
ispitivanja jednakosti "=".
Ovaj operator vrši binarnu usporedbu. To je
podrazumijevani način usporedbe stringova sa ovim
operatorom, kao što je kod funkcije
StrComp.
Podrazumijevani način usporedbe stringova može se
promijeniti ako se na vrhu modula navede
Option Compare Text
čime podrazumijevani način postaje tekstualni.
Brisanjem ovog iskaza ili pomoću
Option Compare Binary podrazumijevani način
opet postaje binarni. VBA dozvoljava vrlo
jednostavno nadovezivanje (konkatenaciju) stringova
korištenjem operatora +
ili &. Tako će
izraz S = "Black" + "White"
rezultirati u stringu "BlackWhite".
Treba biti oprezan kada se radi sa
Variant varijablama jer
Variant podaci
mijenjaju tip u zavisnosti od toga što radimo sa
njima. Uzmimo, na primjer, string
S u koji je upisan
string "105" i
promotrimo slijedeće dvije VBA upute:
S = 2 * S S = S + S
Nakon prve upute S bi
imao brojevnu (numeričku) vrijednost 210 (2*105), a
nakon druge upute S bi
bio string "105105"
(105&105). Pri radu sa stringovima, operator
+ uvijek vrši
nadovezivanje. Međutim, ako radite sa
Variant varijablom u
koju je prvobitno upisan string, a nakon toga se
promijeni tip podatka, operator
+ više neće
vršiti nadovezivanje.
Pogledajte i link
KODNE STRANICE na kojem možete pogledati
razne kodne brojeve za određene znakove (znake)
(primjer uz dozvolu prenesen iz
materijala sa predavanja prof. S.Đukanović)
|