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.

'lista_argumenata' je lista argumenata koja se predaje proceduri ili funkciji i mora se navesti<br />

toĉan tip varijable koja se predaje. Ako se poziva funkcija, poželjno je navesti i tip koji funkcija<br />

vraća - As tip – kako bi se vidjelo je li ispravno pridružena varijabli.<br />

<strong>VBA</strong> uĉitava DLL pri prvom pozivu funkcije iz DLL-a i on ostaje u memoriji dok se ne zatvori<br />

radna bilježnica u kojoj se nalazi taj <strong>VBA</strong> modul.<br />

2.3.4.2 Predaja argumenata po vrijednosti i po referenci<br />

<strong>VBA</strong> kod inicijalno predaje argumente preko referenci, a ne preko njihovih vrijednosti. Ako<br />

funkcija oĉekuje pokazivaĉ tada se argument predaje po referenci (ByRef), inaĉe se predaje po<br />

vrijednosti (ByVal).<br />

a) Primjer predaje argumenta ByVal – sljedeća funkcija je samo dio DLL-a i napisana je u<br />

programskom jeziku C++, a raĉuna opseg kruga za zadani radijus:<br />

double WINAPI opseg(double dRadius)<br />

{<br />

return dRadius * 2 * 3.14159;<br />

}<br />

U Windowsima, DLL funkcije koriste __stdcall konvenciju pozivanja funkcije. U ovom primjeru<br />

je upotrijebljena konstanta WINAPI koja u sebi već sadrži konvenciju __stdcall.<br />

Visual Basic kod koji koristi funkciju opseg za ispis u <strong>Excel</strong> tablici vrijednosti radijusa i njegovog<br />

odgovarajućeg opsega:<br />

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

(ByVal radius As Double) As Double<br />

Sub TablicaOpsega( )<br />

Dim x As Double<br />

Worksheets(1).Activate<br />

Range("a1:c11").Clear<br />

Cells(1, 1).Value = "Radius"<br />

Cells(1, 2).Value = "Opseg Kruga"<br />

For i = 1 To 10<br />

Cells(i + 1, 1).Value = i<br />

Cells(i + 1, 2).Value = opseg(i)<br />

Next<br />

Columns("a:b").AutoFit<br />

End Sub<br />

Declare naredba koristi ByVal kljuĉnu rijeĉ, jer se argument prenosi po vrijednosti.<br />

25

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

Saved successfully!

Ooh no, something went wrong!