Acest tutorial vă va învăța cum să returnați o valoare dintr-o procedură secundară în VBA.
O procedură secundară nu este concepută pentru a returna o valoare - pentru aceasta este utilizată o procedură funcțională. Cu toate acestea, poate exista un moment în care executați un cod într-o procedură secundară în care trebuie să obțineți o valoare din acea procedură secundară. Modul de a face acest lucru este să utilizați modul sau variabile globale sau să utilizați o subprocedură pentru a completa o foaie Excel.
Utilizarea variabilelor pentru a returna o valoare
Puteți declara variabile la nivel de modul. Atunci când faceți acest lucru, acele variabile pot fi utilizate oriunde în cadrul modulului și variabilele își păstrează valorile. Pentru a declara o variabilă la nivel de modul, pur și simplu declarați variabila din partea de sus a modulului de cod:
123456789 | Opțiune explicităDim dblQty ca DubluSub TestA ()'apelați sub TestB subApelați TestB'afișează valoarea variabilă în fereastra modululuiDebug.Print dblQtySfârșitul Sub |
1234 | Sub TestB ()'populează variabila modululuidblQty = 900Sfârșitul Sub |
Pentru a pune acestea împreună, am rula TestA, care la rândul său ar numi TestB și ne-ar da valoarea 900 în fereastra imediată.
Acest lucru ar funcționa numai în cadrul modulului, deoarece variabila a fost declarată folosind instrucțiunea Dim la nivelul modulului.
Variabilă globală
Puteți declara variabila la nivel global pentru ao utiliza în modulele de proiect.
Utilizarea unei proceduri secundare pentru a popula o foaie Excel
Procedura secundară de mai jos va popula direct intervalul A1 până la C1 în foaia dvs. Excel, returnând astfel valorile în celule din procedura secundară.
12345 | Sub PopulateRange ()Range ("A1") = "Produs"Range ("B1") = "Cantitate"Range ("C1") = "Cost"Sfârșitul Sub |
Apoi, puteți face referire la aceste valori într-o altă procedură, referindu-vă la valorile celulei:
1234567 | Sub RetrieveRange ()Reduceți produsul ca șir, Cant cât timp, Costul dubluProdus = Gama („A1”)Quant = Range („B1”)Cost = Interval („C1”)Sfârșitul Sub |