Funkcija VBA IIF

Šī apmācība izskaidros, kā izmantot IIF VBA

Funkcija VBA IIF ir līdzīga IF funkcijas izmantošanai programmā Excel. Tas pārbauda, ​​vai nosacījums ir izpildīts, atgriežot vienu vērtību (vai aprēķinu), ja tā ir TRUE, citu vērtību (vai aprēķinu), ja tā ir FALSE.

Tas ir līdzīgs paziņojumam VBA If, daudzi uzskata, ka šīs metodes izmantošana ir īsceļš, jo, lai iegūtu vēlamo rezultātu, jums ir jāraksta tikai viena koda rinda, nevis jāizmanto Ja… Tad… Citādi… Beigas Ja rutīna. Tomēr tas ir jāizmanto pareizi, jo tas var radīt problēmas jūsu kodā.

IIF sintakse

Funkcija IFF sastāv no 3 daļām - loģiskā testa, patiesās daļas un viltus daļas.

  • Izteiksme:Loģiskais tests, kam jānotiek.
  • Patiesā daļa: Rezultāts, kas tiks atgriezts, ja loģiskais tests būs PATIESS.
  • Nepatiesa daļa: Rezultāts, kas tiks atgriezts, ja loģiskais tests būs FALSE.

IIF funkciju procedūras rakstīšana

123 Funkcija GetNames (strName As String) Kā virkneGetNames = IIf (strName = "Jānis", "Vārds ir Jānis", "Vārds nav Jānis")Beigu funkcija

Iepriekš minētajā funkcijā mēs varam izmantot apakšprocedūru, lai pārbaudītu, vai mainīgais, ko mēs nododam funkcijai, ir virkne “Jānis”

123 ApakštestsGetNamaes ()MsgBox GetNames ("Jānis")Beigu apakš

Ja mēs izpildītu apakšprocedūru TestGetNames, tā izsauktu funkciju GetNames un atgrieztu ziņojumu lodziņu.

Ja tā vietā būtu izmantojis metodi If, kods izskatītos šādi:

1234567 Funkcija GetNames (strName As String) Kā virkneJa (strName = "Jānis") TadGetNames = "Vārds ir Jānis"CitādiGetNames = "Vārds nav Jānis"Beigas JaBeigu funkcija

Mēs esam efektīvi uzrakstījuši vienu koda rindu, nevis 5 koda rindas - iespaidīgi!

Kāpēc izmantot If?

Apsveriet sekojošo

123 Funkcija GetNames (strName As String) Kā virkneGetNames = IIf (strName = "Jānis", MsgBox ("Vārds ir Jānis"), MsgBox ("Vārds nav Jānis")Beigu funkcija

Tagad, ja izpildāt šo apakšprocedūru, lai izsauktu savu funkciju

123 Sub TestGetNames ()GetNames ("Jānis")Beigu apakš

Jūs saņemtu tādu pašu ziņojumu lodziņu kā iepriekš, bet tad tūlīt pēc tam - jūs saņemtu nākamo ziņojumu lodziņu!

Funkcija IIF izpilda koda rindas sadaļas TRUE un FALSE - tā neiziet no koda, tiklīdz konstatējusi, ka nosacījums ir patiess - tā joprojām izpilda arī viltus sadaļu, tādējādi sniedzot mums nepatiesu ziņojumu otrais ziņojumu lodziņš. Ja jūs būtu izmantojisJa… Tad… Citādi… Beigas Ja - tas nebūtu noticis - IF funkcija izpilda tikai koda sadaļu TRUE vai FALSE atkarībā no loģikas, kas tiek nodota kodam.

Kods ir slikti izstrādāts (ar nolūku!), Un ziņojumu lodziņi tiek turēti koda rindiņā, kurā ir ieslēgts IIF priekšraksts, nevis pēc koda vai apakšprogrammā. Tā kā IIF funkcija izpilda paziņojuma sadaļas TRUE un FALSE, tiek atgriezti abi ziņojumi.

Mēs varētu novērst šo kļūdu, pārvietojot ziņojumu lodziņu zem IIF funkciju rindas, kā norādīts zemāk esošajā kodā, vai pārvietojot ziņojumu lodziņu uz apakšprocedūru, kā norādīts šajā rakstā.

1234 Funkcija GetNames (strName As String) Kā virkneGetNames = IIf (strName = "Jānis", "Vārds ir Jānis", "Vārds nav Jānis")MsgBox (GetNames)Beigu funkcija

Ja esat uzmanīgs, rakstot kodu, IIF funkcija var ietaupīt daudzas koda rindas un papildu rakstīšanu!

Ligzdoti IIF

Mēs varam ligzdot IIF funkciju līdzīgi kā IF funkciju, bet atkal viss tiek darīts vienā rindā.

123 Funkcija GetDiscount (dblPrice As Double) Kā DoubleGetDiscount = IIf (dblPrice> = 500, 10, IIf (dblCena> = 250, 5, IIf (dblCena> = 100, 2,5, 0)))Beigu funkcija

Pēc tam mēs varētu izsaukt šo funkciju no apakšprocedūras

12345 Sub FindDiscount ()Dim dblP Kā dubultādblP = 899MsgBox ("Atlaide, ko varat saņemt" & GetDiscount (dblP) & "%")Beigu apakš

vai arī varat to izsaukt no Excel, izmantojot to kā UDF (lietotāja definēta funkcija)

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave