Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Fier
  • Funcția de selectare a cazului verifică toate condițiile. Operator de filială „Selectați cazul”

Funcția de selectare a cazului verifică toate condițiile. Operator de filială „Selectați cazul”

Structurile de control vă permit să controlați secvența execuției programului. Fără instrucțiuni de control, toate instrucțiunile programului vor rula de la stânga la dreapta și de sus în jos. Cu toate acestea, uneori este necesar să se execute în mod repetat un anumit set de instrucțiuni în mod automat sau să se rezolve problema diferit, în funcție de valorile variabilelor sau parametrilor specificati de utilizator în timpul execuției. Construcțiile de control și buclele sunt utilizate pentru aceasta.

VBA acceptă următoarele structuri de decizie:

Dacă. ... ... Atunci. ... ... Altfel

6.1 Construcția If. ... ... Atunci

Dacă. ... ... Apoi este folosit atunci când este necesar să se execute una sau un grup de instrucțiuni în funcție de o anumită condiție. Sintaxa pentru acest construct vă permite să-l specificați pe o linie sau în mai multe rânduri ale programului:

Dacă condiția Atunci expresia Dacă condiția Atunci expresia Sfârșit Dacă

Condiția este de obicei o simplă comparație, dar poate fi orice expresie cu o valoare calculată. Această valoare este interpretată ca falsă dacă este zero și orice valoare diferită de zero este considerată adevărată. Dacă condiția este adevărată, atunci toate expresiile de după cuvântul cheie Then sunt executate. Pentru a executa condiționat o singură instrucțiune, puteți utiliza atât sintaxa cu o singură linie, cât și sintaxa pe mai multe rânduri (construcție bloc).

Următorii doi operatori sunt echivalenti:

Dacă există o dată< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

Rețineți că sintaxa instrucțiunii If. ... ... Atunci nu folosește instrucțiunea End If pentru o singură linie. Pentru a executa o secvență de instrucțiuni dacă o condiție este adevărată, utilizați clauza de bloc If. ... ... Atunci. ... ... Încheiați dacă.

Dacă există o dată< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If

Dacă condiția este falsă, atunci instrucțiunile de după cuvântul cheie Then nu sunt executate și controlul este transmis la următoarea linie (sau linia de după instrucțiunea End If într-o construcție bloc).

6.2 Dacă se construiește. ... ... Atunci. ... ... Altfel

definește mai multe blocuri de instrucțiuni, dintre care unul va fi executat în funcție de condiția:

Dacă condiție1 Atunci expresie1 ElseIf condiție2 Atunci expresie2. ... ... Else expresie -n End If

Când este executat, condiția1 este verificată mai întâi. Dacă este fals, VBA verifică următoarea condiție2 și așa mai departe, până când găsește o condiție adevărată. Când VBA îl găsește, execută blocul corespunzător de instrucțiuni și apoi transferă controlul instrucțiunii după instrucțiunea End if. În acest construct, puteți include un bloc de instrucțiuni Else pe care VBA îl execută dacă nu este îndeplinită nici una dintre condiții.

Dacă. ... ... Atunci. ... ... ElseIf este de fapt doar un caz special al constructului If. ... ... Atunci. ... ... Altfel. Rețineți că această construcție poate conține orice număr de blocuri ElseIf sau chiar niciunul. Blocul Else poate fi inclus indiferent de prezența sau, dimpotrivă, absența blocurilor ElseIf.

Subexemplul 1 () Dim a As Single, b As Single, x As Single Dim z As Double Call read ("A1", a) Call read ("B1", b) Fie x = CSng (InputBox ("introduceți x" , „Intrare date”, 0)) Dacă x<= a Then z = Sin(x) ElseIf x >= b Atunci z = Tan (x) Else: z = Cos (x) End If Call out ("C1", z) End Sub

Rețineți că puteți adăuga orice număr de blocuri Elself la declarația dumneavoastră If. ... ... Atunci. Cu toate acestea, numărul de blocuri Elself poate deveni atât de mare încât If. ... ... Atunci va deveni foarte greoaie și incomod. Într-o astfel de situație, ar trebui utilizat un alt construct de luare a deciziilor - Select Case.

6.3 Selectați Case Construction

Construcția Select Case este o alternativă la constructia If. ... ... Atunci. ... ... Altfel în cazul executării unui bloc format dintr-un set mare de instrucțiuni. Construcția Select Case oferă o capacitate similară construcției If. ... ... Atunci. ... ... În rest, dar vă face codul mai lizibil atunci când aveți mai multe opțiuni.

Construcția Select Case operează pe o singură expresie testabilă, care este evaluată o dată la intrarea în construct. VBA compară apoi rezultatul cu valorile specificate în instrucțiunile Case ale constructului. Dacă se găsește o potrivire, blocul de instrucțiuni asociat instrucțiunii Case este executat:

Selectați caz test_expression]]. ... ... ] End Select

Fiecare listă de expresii este o listă cu una sau mai multe valori. Dacă există mai multe valori într-o listă, acestea sunt separate prin virgulă. Fiecare bloc de instrucțiuni conține mai multe instrucțiuni sau niciuna. Dacă se dovedește că valoarea calculată a expresiei testate corespunde valorilor din mai multe instrucțiuni Case, atunci blocul de instrucțiuni asociat cu prima instrucțiune Case din toate potrivirile găsite este executat. VBA execută un bloc de instrucțiuni asociat cu o instrucțiune Case Else (rețineți că este opțional) dacă nu este găsită nicio valoare a expresiei care să se potrivească cu valori din toate listele de instrucțiuni Case.

Să luăm în considerare un exemplu de calcul al funcției

Sub exemplu2 () Const pi2 = 1,57 Dim x As Single Dim z As Double Let x = CSng (InputBox ("introduceți x", "Intrare date", 0)) Selectați caz x caz -pi2 z = Sin (x) caz 0 z = Cos (x) Case pi2 z = Tan (x) Case Else MsgBox "Date de intrare nevalide!" Ieșire Sub End Selectați Call out ("D1", z) End Sub

Rețineți că constructul Select Case evaluează expresia o singură dată când o introduceți și în If. ... ... Atunci. ... ... În caz contrar, o expresie diferită este evaluată pentru fiecare afirmație Elself. Dacă. ... ... Atunci. ... ... Else poate fi înlocuit cu Select Case numai dacă instrucțiunea If și fiecare instrucțiune Elself evaluează aceeași expresie.

LIMBAJUL DE PROGRAMARE VISUAL DE BAZĂ. PROGRAMARE SUCURSALA

Ramificarea în Visual Basic este organizată folosind:

  • instrucțiunea IF condiționată;
  • funcție IIF încorporată;
  • selectați operatorul CASE.

Pentru a verifica o condiție și a executa un operator sau un bloc de instrucțiuni, utilizați conditionat DACA... ATUNCI... Acest operator poate fi utilizat cu diferite sintaxe: cu o singură linie (liniar) și cu mai multe linii (bloc).

Operatorul liniar are următoarea sintaxă:

Dacă<условие>Atunci<операторы!>

Instrucțiunea bloc are următoarea sintaxă:

Dacă<условие>Atunci
<блок операторов 1>
Încheiați dacă

Dacă condiția specificată este True, blocul de instrucțiuni este executat; în caz contrar, blocul de instrucțiuni2. Dacă clauza Else nu este specificată,Dacă condiția este îndeplinită, controlul este transmis imediat următorului operator după If.

Instrucțiunea If poate fi imbricată, adică poate fi în interiorul blocurilor de instrucțiuni. Pentru a testa mai mult de o condiție și a executa unul dintre mai multe blocuri de instrucțiuni, se folosește un operator condiționat extins al formularului:

Dacă<условие 1>Atunci
<блок операторов 1>
Elself<условие 2>Atunci
<блок операторов 2>
Elself<условие n>Atunci
<блок операторов n>
Încheiați dacă

Pentru a selecta una dintre valorile în funcție de îndeplinirea sau neîndeplinirea unei anumite condiții, se utilizează funcția condiționată IIF, care are următoarea sintaxă:

IIF (<условие>, <значение1>, <значение2>)

Această funcție returnează valoarea1 dacă condiția este adevărată și valoarea2 dacă condiția este falsă.

Ca o condiție, puteți utiliza o expresie booleană care returnează True sau

Fals sau orice expresie aritmetică (zero este echivalent cu Fals și diferit de zero este adevărat).

instrucțiunea SELECT CASE este folosit pentru a testa o condiție și pentru a executa unul dintre mai multe blocuri de instrucțiuni.

Format de înregistrare operator:

Selectați caz<проверяемое выражение>
Caz<список выражений 1>
<операторы 1>Caz<список выражений 2>
<операторы 2>Caz<список выражений 3>
<операторы 3>
Alt caz
<операторы группы Else>
Încheierea selectării

Expresia testată este evaluată la începutul instrucțiunii Select Case. Această expresie poate returna orice tip de valoare (boolean, numeric, șir).

O listă de expresii este una sau mai multe expresii separate printr-un caracter separator standard (punct virgulă).

Când se execută operatorul, se verifică dacă cel puțin unul dintre elementele acestei liste se potrivește cu expresia testată.

Această listă de expresii pensie alimentară poate lua una dintre următoarele forme:

  • <выражение>- verifică coincidenţa expresiei date cu una dintre expresiile - elementele listei;
  • <выражение 1>Acea<выражение 2>- verifică dacă expresia specificată se află în intervalul specificat;
  • < Is <логический оператор> < выражение>- verifică îndeplinirea condiției specificate pentru expresia specificată.

Și în postarea de astăzi vom discuta despre declarația VBA select case. VBA Select Case poate fi utilizat în locul instrucțiunilor complexe Excel Imbricate If. Acest lucru face codul VBA mai rapid de executat și mai ușor de înțeles.

Instrucțiunea Select-Case (numită și Switch Case în unele limbi) verifică o variabilă sau o expresie pentru diferite cazuri (valori). Dacă vreunul dintre cazuri devine adevărat, atunci numai acel caz este executat și programul ignoră toate celelalte cazuri.

Dacă vă amintiți în ultimul nostru post am vorbit despre „cum poți”.

Sintaxa instrucțiunii VBA Select Case:

Sintaxa este ca mai jos:

Selectați Condiția cazului
Valoarea cazului_1
Cod de executat când condiția = value_1
Valoarea cazului_2
Cod de executat când condiția = value_2
Valoarea cazului_3
Cod de executat când condiția = value_3
Alt caz
Cod de executat Când toate celelalte cazuri sunt false
Încheierea selectării

Aici, „Condiție” se referă la variabila sau expresia care urmează să fie testată și pe baza căreia va fi executat oricare dintre segmentele de cod.

„Valoare_1”, „valoare_2” și „valoare_3” sunt posibilele rezultate ale „Condiției”. Ori de câte ori oricare dintre aceste valori se potrivește cu „Condiția”, atunci blocul Case corespunzător se va executa.

„Else” este un fel de valoare implicită a cazului, care se va executa numai atunci când toate instrucțiunile Case de mai sus au ca rezultat False. Cazul „Alt” este opțional, dar, în general, este considerat o bună practică să îl folosiți.

Exemple de Select-Case în VBA:

Acum să trecem la câteva exemple practice de declarații de caz.

Exemplul 1: Selectați Declarație de caz cu o expresie.

În exemplul de mai jos, am furnizat o condiție (adică a = b) instrucțiunii Select Case. Dacă acesta este adevărat, atunci blocul „Case True” va fi executat, iar dacă este False, blocul „Case False” se va executa.

Sub Select_Case_Example () "Introduceți valoarea pentru variabile a = InputBox (" Introduceți valoarea pentru A: ") b = InputBox (" Introduceți valoarea pentru B: ")" Evaluarea expresiei Select Case a = b Case True MsgBox "The expresia este TRUE „Case False MsgBox” Expresiile este FALSE „End Select End Sub

Notă:În acest cod este folosit pentru obținerea de valori de la utilizator.

Exemplul 2: Declarație de caz pentru a verifica șirurile de text

În acest exemplu vom compara șirurile de text din instrucțiunile Case. Dacă se găsește o potrivire, blocul de caz corespunzător se va executa, altfel blocul „Altul caz” se va executa.

Sub Select_Case_Example () "Introduceți valoarea pentru variabile fruit_name = InputBox (" Introduceți numele fructului: ")" Evaluarea expresiei Select Case fruit_name Case "Apple" MsgBox "Ați introdus Apple" Case "Mango" MsgBox "You entered Mango" Case „Orange” MsgBox „Ați intrat în portocaliu” Caz Else MsgBox „Nu” știam acest fruct! „End Select End Sub

Exemplul 3: Declarație de caz pentru a verifica numerele

În exemplul de mai jos vom verifica dacă numărul introdus de utilizator este mai mic sau mai mare de 5.

Sub Select_Case_Example () "Introduceți valoarea pentru variabile Num = InputBox (" Introduceți orice număr între 1 și 10: ")" Evaluarea expresiei Select Case Num Case Is< 5 MsgBox "Your Number is less than 5" Case Is = 5 MsgBox "Your Number is Equal to 5" Case Is >5 MsgBox „Numărul tău este mai mare decât 5” End Select End Sub

Notă: Poți să folosești ESTE cuvânt cheie cu declarație de caz pentru a compara valori.

Exemplul 4: Selectați Declarație de caz pentru a verifica mai multe condiții într-un singur caz.

În acest exemplu, vom cere utilizatorului să introducă orice număr de la 1 la 10. Și apoi vom verifica dacă numărul este par sau impar folosind mai multe condiții în declarația case. Observați aici că am folosit un „,” (virgulă) pentru a compara mai multe condiții într-un singur caz.

Sub Select_Case_Example () "Introduceți valoarea pentru variabile Num = InputBox (" Introduceți orice număr între 1 și 10: ")" Evaluarea expresiei Select Case Num Case 2, 4, 6, 8, 10 MsgBox "Numărul dvs. este par." Cazul 1, 3, 5, 7, 9 MsgBox „Numărul tău este impar”. Case Else MsgBox „Numărul dvs. este în afara intervalului.” End Selectați End Sub

Notă:Știu că există metode mai ușoare de a verifica dacă un număr este par sau impar, dar am folosit acest exemplu doar pentru a explica cum puteți verifica mai multe condiții în interiorul unei singure declarații case.

Exemplul 5: Declarație de caz pentru a verifica un interval continuu ca condiție.

Aici vom testa un interval continuu ca condiție. Vom cere utilizatorului să introducă orice număr între 1-10, dacă numărul este între 1 și 5 (inclusiv atât 1, cât și 5), atunci „Cazul de la 1 la 5” va fi „Adevărat”, dacă numărul introdus de utilizator este între 6 și 10 (inclusiv ambele 6 și 10), atunci „Cazul 6 până la 10” va fi „Adevărat”, dacă ambele cazuri anterioare sunt „False”, atunci „Cazul Altceva” va fi executat.

Sub Select_Case_Example () "Introduceți valoarea pentru variabile Num = InputBox (" Introduceți orice număr între 1 și 10: ")" Evaluarea expresiei Select Case Num Case 1 To 5 MsgBox "Your Number between 1 to 5" Case 6 To 10 MsgBox „Numărul tău între 6 și 10” Caseta de mesaje Altfel „Numărul tău este în afara intervalului.” End Selectați End Sub

Deci, totul a fost vorba despre Declarația de caz selectată VBA. Simțiți-vă liber să vă împărtășiți părerile despre acest subiect.

Despre ankit kaul

Ankit este fondatorul Excel Trick. Este un tech Geek căruia îi place să stea în fața iubitei lui cu cap pătrat (PC-ul său) toată ziua. :D. Ankit are o pasiune puternică pentru a învăța Microsoft Excel. Singurul său scop este să vă transforme în „Excel Geeks”.

Cei mai importanți operatori condiționali utilizați în Excel VBA sunt operatorii Daca atunciși Selectați caz... Ambele expresii verifică una sau mai multe condiții și, în funcție de rezultat, efectuează acțiuni diferite. În continuare, vom vorbi despre acești doi operatori condiționali mai detaliat.

Visual Basic Dacă... Atunci Declarație

Operator Daca atunci verifică condiția și, dacă este ADEVĂRAT, atunci se realizează setul specificat de acțiuni. Un set de acțiuni poate fi, de asemenea, definit pentru a fi efectuate dacă condiția este FALSĂ.

Sintaxa operatorului Daca atunci ca aceasta:

Dacă Condiția 1 Atunci
Acțiuni dacă Condiția1 este îndeplinită
ElseIf Condiția 2 Atunci
Acțiuni dacă Condiția2 este îndeplinită
Altfel
Acțiuni în cazul în care niciuna dintre Condiții nu este îndeplinită
Încheiați dacă

În această expresie, elementele ElseIfși Altfel condițiile operatorului nu pot fi utilizate dacă nu sunt necesare.

Mai jos este un exemplu în care se utilizează operatorul Daca atunci culoarea de umplere a celulei active se modifică în funcție de valoarea din ea:

Dacă ActiveCell.Value< 5 Then ActiveCell.Interior.Color = 65280 "Ячейка окрашивается в зелёный цвет ElseIf ActiveCell.Value < 10 Then ActiveCell.Interior.Color = 49407 "Ячейка окрашивается в оранжевый цвет Else ActiveCell.Interior.Color = 255 "Ячейка окрашивается в красный цвет End If

Rețineți că, de îndată ce condiția devine adevărată, execuția instrucțiunii condiționate este întreruptă. Prin urmare, dacă valoarea variabilei ActiveCell mai puțin de 5, atunci prima condiție devine adevărată și celula devine verde. După aceea, execuția operatorului Daca atunci este întreruptă și alte condiții nu sunt verificate.

Selectați Declarația caz în Visual Basic

Operator Selectați caz similar cu operatorul Daca atunci prin aceea că verifică și adevărul condiției și, în funcție de rezultat, alege una dintre opțiuni.

Sintaxa operatorului Selectați caz ca aceasta:

Selectați caz Expresie
Caz Valoarea1
Acțiuni în cazul în care rezultatul expresiei se potrivește cu Value1
Caz Valoarea 2
Acțiuni în cazul în care rezultatul expresiei se potrivește cu Value2

Alt caz
Acțiuni în cazul în care rezultatul Expression nu se potrivește cu niciuna dintre opțiunile enumerate Valori
Încheierea selectării

Element Alt caz este opțional, dar este recomandat pentru gestionarea valorilor neașteptate.

În exemplul următor, folosind construcția Selectați caz culoarea de umplere a celulei curente se modifică în funcție de valoarea din ea:

Selectați Case ActiveCell.Value Case Is<= 5 ActiveCell.Interior.Color = 65280 "Ячейка окрашивается в зелёный цвет Case 6, 7, 8, 9 ActiveCell.Interior.Color = 49407 "Ячейка окрашивается в оранжевый цвет Case 10 ActiveCell.Interior.Color = 65535 "Ячейка окрашивается в жёлтый цвет Case 11 To 20 ActiveCell.Interior.Color = 10498160 "Ячейка окрашивается в лиловый цвет Case Else ActiveCell.Interior.Color = 255 "Ячейка окрашивается в красный цвет End Select

Exemplul de mai sus arată cum puteți seta o valoare pentru un element în diferite moduri Caz in constructie Selectați caz... Acestea sunt modalitățile:

Cazul este<= 5 Astfel, folosind cuvântul cheie Cazul este se poate verifica daca valoarea satisface Expresii stare ca <=5 .
Cazul 6, 7, 8, 9 Acesta este modul în care puteți verifica dacă valoarea este aceeași Expresii cu una dintre valorile enumerate. Valorile enumerate sunt separate prin virgule.
Cazul 10 Aceasta verifică dacă valoarea este aceeași Expresii cu o valoare dată.
Cazul de la 11 la 20 Astfel, puteți scrie o expresie pentru a testa dacă valoarea satisface Expresii stare ca de la 11 la 20(echivalent cu inegalitatea „11<=значение<=20”).
Alt caz Astfel, folosind cuvântul cheie Altfel, acțiunile sunt indicate în cazul în care valoarea Expresii nu se potrivește cu niciuna dintre opțiunile enumerate Caz.

De îndată ce se găsește una dintre condiții, se efectuează acțiunile corespunzătoare și se iese din structură. Selectați caz... Adică, în orice caz, va fi executată doar una dintre ramurile enumerate Caz.

O.K., nu ai cum să faci ce vrei. Nu puteți utiliza altceva decât sintaxa Excel în interiorul unei formule, așa că lucruri precum „A1 = 1 până la 9” pur și simplu nu sunt posibile.

Ați putea scrie o rutină VBA destul de complexă care a luat șiruri de caractere sau orice altceva și le-a analizat, dar asta se reduce într-adevăr la proiectarea și implementarea unui mic limbaj complet. Și „codul” tău nu va funcționa bine cu Excel. De exemplu, dacă ai sunat ceva de genul

Cazuri ("(A1 =" "" "," "nu există nimic" "), (altfel, A1)")

(rețineți ghilimelele escape) Excel nu vă va actualiza referința A1 când o mutați sau copiați o formulă. Prin urmare, aruncați întregul parametru „sintaxă”.

Cu toate acestea, se dovedește că puteți obține cea mai mare parte a comportamentului pe care cred că îl doriți cu adevărat cu formule Excel obișnuite plus un UDF VBA mic. Mai întâi UDF:

Funcție publică arr (ParamArray args ()) arr = args End Function

Acest lucru ne permite să creăm o matrice dintr-un set de argumente. Deoarece argumentele pot fi expresii, nu doar constante, o putem numi din formula astfel:

Arr (A1 = 42, A1 = 99)

și returnează o matrice de valori boolean.

Cu acest mic UDF, acum puteți folosi formule obișnuite pentru „culegerea de cazuri”. Ar arăta astfel:

ALEGEȚI (POTRIV) (ADEVĂRAT, arr (A1> 5, A1<5, A1=5), 0), "gt 5", "lt 5", "eq 5")

Ceea ce se întâmplă este că „arr” returnează o matrice booleană, „MATCH” găsește poziția primului TRUE, iar „CHOOSE” returnează „cazul” corespunzător.

Puteți emula clauza „altfel” prin împachetarea întregului lucru în „IFEROARE”:

DACĂ EROARE (ALEGEȚI (POTRIV) (ADEVĂRAT, arr (A1> 5, A1<5), 0), "gt 5", "lt 5"), "eq 5")

Dacă acest lucru este prea mult pentru dvs., puteți oricând să scrieți un alt UDF VBA care va avea ca rezultat MATCH, CHOOSE etc. înăuntru și îl va numi așa:

Cazuri (arr (A1> 5, A1<5, A1=5), "gt 5", "lt 5", "eq 5")

Acest lucru este aproape de sintaxa sugerată de dvs. și mult, mult mai simplu.

Văd că ai venit deja cu o soluție (bună) mai apropiată de ceea ce îți dorești cu adevărat, dar m-am gândit să adaug asta oricum, întrucât expresia mea de mai sus este despre casting MATCH, CHOOSE etc. în interiorul UDF a făcut-o să pară mai simplu decât este în realitate.

Deci, iată cazurile „UDF”:

Cazuri cu funcții publice (caseCondResults, ParamArray caseValues ​​​​()) La eroare GoTo EH Dim resOfMatch resOfMatch = Application.Match (True, caseCondResults, 0) If IsError (resOfMatch) Then cases = resOfMatch Else Call assign (case, caseValues ​​​​( LBound) (caseValues ​​+ resOfMatch - 1)) End If Exit Function EH: cases = CVErr (xlValue) End Function

Utilizează o mică rutină de ajutor, „atribuiți”:

Public Sub assign (ByRef lhs, rhs) If IsObject (rhs) Then Set lhs = rhs Else lhs = rhs End If End Sub

Procedura de atribuire face mai ușor să se ocupe de faptul că utilizatorii pot invoca UDF-uri cu orice valoare sau referință de interval. Deoarece dorim ca UDF-ul „cazurilor” noastre să funcționeze ca Excel „ALEGE”, am dori să returnăm referințe după cum este necesar.

Practic, în noile „cazuri” UDF facem noi înșine „alegerea”, indexând valorile cazului în matricea de parametri. Am eliminat acolo handlerul de erori, așa că lucruri de bază, cum ar fi nepotrivirea dintre rezultatele condiției cazului și valorile cazului, vor avea ca rezultat o valoare de returnare #VALOR! Probabil ați adăuga mai multe verificări la funcția reală, de exemplu, pentru a vă asigura că rezultatele condiției au fost booleene etc.

Mă bucur că ai obținut o soluție și mai bună pentru tine! A fost interesant.

MAI MULTE DESPRE „assign”:

Ca răspuns la comentariul tău, iată mai multe despre motivul pentru care acesta face parte din răspunsul meu. VBA folosește o sintaxă diferită pentru atribuirea unui obiect unei variabile decât pentru alocarea unei valori simple. Aruncați o privire la ajutorul VBA sau uitați-vă la această întrebare stackoverflow și altora le va plăcea: Ce face cu adevărat cuvântul cheie Set în VBA?

Acest lucru contează deoarece atunci când apelați o funcție VBA dintr-o formulă Excel, parametrii pot fi obiecte Range, în plus față de numere, șiruri de caractere, boolean, erori și matrice. (Consultați Poate unui Excel VBA UDF invocat dintr-o foaie de lucru să i se transmită vreodată o instanță a oricărei clase de model de obiecte Excel VBA, alta decât „Range”?)

Referințele de interval sunt ceea ce descrieți folosind sintaxa Excel, cum ar fi A1: Q42. Când treceți unul la Excel UDF ca parametru, acesta apare ca obiect Range. Dacă doriți să returnați un obiect Range dintr-un UDF, trebuie să faceți acest lucru în mod explicit folosind cuvântul cheie „Set” VBA. Dacă nu utilizați Set, Excel va prelua valoarea din interval și o va returna. De cele mai multe ori nu contează, dar uneori doriți intervalul real, de exemplu atunci când aveți o formulă numită care trebuie evaluată la un interval, deoarece este folosită ca sursă pentru lista de verificare.

Top articole similare