30.03.2017 Views

Excel_VBA_manual

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Primjer <strong>VBA</strong> koda koji deklarira i poziva STip funkciju:<br />

Declare Function STip Lib "primjer" _<br />

(s As String) As Integer<br />

Sub STipTest()<br />

Dim s As String<br />

MsgBox STip(s) 'ispisuje 2<br />

s = ""<br />

MsgBox STip(s) ' ispisuje 3<br />

s = "primjer"<br />

MsgBox STip(s) ' ispisuje 4<br />

End Sub<br />

2.3.4.5 Korištenje korisnički definiranih struktura<br />

Naredba Type koristi se u <strong>VBA</strong> kodu za kreiranje korisniĉki definiranih struktura. Na primjer,<br />

sljedeći <strong>VBA</strong> tip podatka i struktura u C-u su identiĉni.<br />

U <strong>VBA</strong>:<br />

Type ARG<br />

i As Integer<br />

str As String<br />

End Type<br />

U C-u:<br />

typedef struct {<br />

short i;<br />

BSTR bstr;<br />

} ARG;<br />

Korisniĉki tipovi podataka na smiju biti predani po vrijednosti, nego po referenci. Primjer<br />

funkcije u C-u koja deklarira argument kao pokazivaĉ na strukturu:<br />

short WINAPI ArgStruktura(ARG *parg, char *szArg)<br />

{ BSTR bstr;<br />

if (parg == NULL)<br />

return -1;<br />

if ((bstr = SysAllocString((BSTR)szArg)) == NULL)<br />

return -1;<br />

// alocira lokalni string<br />

if (parg->bstr != NULL) // stringu je već pridružena vrijednost<br />

SysFreeString(parg->bstr);<br />

parg->i = SysStringByteLen(bstr); //dužina stringa<br />

parg->bstr = bstr;<br />

return parg->i;<br />

}<br />

28

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!