Ja tad cits paziņojums Excel VBA (izskaidrots ar piemēriem)

Programmā Excel VBA, IF Tad cits paziņojums ļauj pārbaudīt stāvokli un attiecīgi veikt darbību.

Tas ir ārkārtīgi vērtīgi daudzās situācijās, kā mēs redzēsim piemēros vēlāk šajā apmācībā.

Lai sniegtu jums vienkāršu piemēru, pieņemsim, ka jums ir Excel atzīmju saraksts un vēlaties izcelt visus tos skolēnus, kuri ir ieguvuši atzīmi A. Tagad, ja es lūdzu to izdarīt manuāli, jūs pārbaudīsit katra skolēna atzīmi un vai A, jūs to izcelsit, un, ja tā nav, tad atstāsit to tādu, kāds tas ir.

To pašu loģiku var izveidot VBA, izmantojot Ja tad citādi arī paziņojums (un, protams, dariet daudz vairāk nekā tikai atzīmju izcelšana).

Šajā apmācībā es parādīšu dažādus veidus, kā konstrukciju “Ja tad citādi” var izmantot programmā Excel VBA, un dažus praktiskus piemērus darbībā.

Bet, pirms es iedziļinos specifikā, ļaujiet man sniegt paziņojuma “JA tad citādi” sintaksi.

Ja jūs interesē vienkāršs VBA apguves veids, apskatiet manu Tiešsaistes Excel VBA apmācība.

Sintakse - JA tad citādi

Tālāk ir sniegta vispārīga sintakse If If Else konstrukcijai VBA

IF nosacījums Tad true_code [citādi false_code]

Vai

IF nosacījums Tad true_code Citādi false_code End IF

Ņemiet vērā, ka šī paziņojuma cita daļa nav obligāta.

Tagad, ja jums rodas jautājums, kāda ir atšķirība starp abām sintaksēm, ļaujiet man precizēt.

Pirmā sintakse ir vienkāršs vienas rindas IF THEN ELSE paziņojums, kurā nav jāizmanto paziņojums END IF.

Tomēr otrajā sintaksē true_code daļa atrodas otrajā rindā. Tas ir noderīgi, ja kods, kas jāizpilda gadījumā, ja IF nosacījums ir patiess, ir garš un sastāv no vairākām rindām.

Sadalot IF paziņojumu vairākās rindās, jums jāpasaka VBA, kur beidzas IF pēc tam konstrukcija.

Tāpēc jums jāizmanto paziņojums End IF.

Ja neizmantojat End IF, kad tas ir nepieciešams, VBA parādīs kļūdu - “Bloķēt IF bez END IF”

Piemēri IF paziņojuma izmantošanai VBA

Lai sniegtu jums priekšstatu par IF-THEN paziņojuma darbību VBA, ļaujiet man sākt ar dažiem pamata piemēriem (daži praktiski un noderīgāki piemēri ir apskatīti vēlāk šajā apmācībā).

Pieņemsim, ka šūnā A1 ir skolēna rezultāts un vēlaties pārbaudīt, vai students nokārtojis eksāmenu (vai nokārtošanas atzīmju slieksnis ir 35).

Tad jūs varat izmantot šādu kodu:

Sub CheckScore () Ja diapazons ("A1"). Vērtība> = 35, tad MsgBox "Pass" Beigu apakšdaļa

Iepriekš minētajam kodam ir viena IF priekšraksta rinda, kas pārbauda vērtību šūnā A1.

Ja tas ir vairāk nekā 35, tas parāda ziņojumu - “Pass”.

Ja tas ir mazāks par 35, nekas nenotiek.

Bet ko darīt, ja vēlaties parādīt ziņojumu abos gadījumos, neatkarīgi no tā, vai students nokārtoja eksāmenu vai neizturēja to.

Zemāk esošais kods to darīs:

Sub CheckScore () If Range ("A1"). Value> = 35 Tad MsgBox "Pass" Cits MsgBox "Fail" End If End Sub

Iepriekš minētais kods izmanto IF, kā arī ELSE paziņojumu, lai izpildītu divus dažādus nosacījumus. Ja rezultāts ir lielāks (vai vienāds ar) 35, IF nosacījums ir patiess, un kods, kas atrodas tieši zem tā, tiek izpildīts (viss pirms cita paziņojuma).

Bet, ja IF nosacījums ir FALSE, kods pāriet uz citu daļu un izpilda tajā koda bloku.

Ņemiet vērā, ka, ja mēs izmantojam vienu rindiņu IF pēc tam, mums nav jāizmanto End IF. Bet, sadalot to vairākās rindās, mums jāizmanto paziņojums End If.

Ievietots IF pēc tam (vairāki IF tad paziņojumi)

Līdz šim mēs esam izmantojuši vienu IF IF paziņojumu.

Ja jums ir jāpārbauda vairāki nosacījumi, varat izmantot:

  • Vairāki IF nosacījumi
  • Ja tad cits paziņojums
  • IF Tad citādi, ja citādi konstruē

Ļaujiet man parādīt, kā tie atšķiras un kā to izmantot programmā Excel VBA.

Vairāki IF Tad paziņojumi

Ņemsim to pašu piemēru par studenta rezultātu izmantošanu.

Ja skolēna rezultāts ir mazāks par 35, parādītais ziņojums ir “Neveiksmīgs”, ja rezultāts ir lielāks vai vienāds ar 35, parādāmā ziņa ir “Pāreja”.

Lai to paveiktu, mēs varam izmantot zemāk esošo kodu:

Sub CheckScore () Ja diapazons ("A1"). Vērtība = 35 Tad MsgBox "Pass" Beigu apakšdaļa

Varat izmantot vairākus IF IF paziņojumus, kā parādīts iepriekš. Lai gan tas darbojas, tas nav labas kodēšanas piemērs (kā redzēsit zemāk redzamās alternatīvas).

Ja jūs nolemjat to izmantot, atcerieties, ka šiem paziņojumiem jābūt vai nu neatkarīgiem, vai savstarpēji izslēdzošiem. Šeit ir svarīgi zināt, ka iepriekš minētajā konstrukcijā tiek novērtēti visi IF paziņojumi un tie, kur nosacījums ir patiess, kods tiek izpildīts.

Tātad, pat ja pirmais IF paziņojums ir pareizs, otrais joprojām tiks novērtēts.

JA tad cits paziņojums

Pieņemsim, ka šoreiz tā vietā, lai parādītu tikai ziņojumu Pass/Fail, mums ir vēl viens nosacījums.

Ja skolēna rezultāts ir mazāks par 35, tiek parādīts ziņojums “Neveiksmīgs”, ja rezultāts ir lielāks vai vienāds ar 35, tiek parādīts ziņojums “Pāreja”, un, ja rezultāts ir lielāks par 80, tiek parādīts ziņojums. ir 'Pass, ar atšķirību'.

Lai to paveiktu, mēs varam izmantot zemāk esošo kodu:

Sub CheckScore () If Range ("A1"). Value <35 then MsgBox "Fail" Else If Range ("A1"). Value <80 then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End or End Sub

Iepriekš minētajā kodā mēs esam izmantojuši vairākus IF paziņojumus (ligzdotu IF pēc tam), izmantojot Else.

Tātad konstrukcijā “IF Tad citādi” ir konstrukcija “IF then Else”. Šis ligzdošanas veids ļauj pārbaudīt vairākus nosacījumus un palaist attiecīgo koda bloku.

IF Tad citādi Paziņojums

Iepriekš minēto kodu (ko mēs redzējām iepriekšējā sadaļā) var vēl vairāk optimizēt, izmantojot ElseIf paziņojumu.

Lūk, ko mēs cenšamies darīt - ja skolēna rezultāts ir mazāks par 35, tiek parādīts ziņojums “Neveiksmīgs”, ja rezultāts ir lielāks vai vienāds ar 35, tiek parādīts ziņojums “Iziet” un, ja punktu skaits ir lielāks par 80, tiek parādīts ziņojums “Pass, with Distinction”.

Sub CheckScore () Ja diapazons ("A1"). Vērtība <35 Tad MsgBox "Fail" ElseIf Range ("A1"). Vērtība <80 Tad MsgBox "Pass" Cita MsgBox "Pass, ar atšķirību" End If End Sub

Iepriekš minētais kods izmanto ElseIf, kas ļauj mums saglabāt visus nosacījumus vienā IF IF paziņojumā.

AND un OR izmantošana, ja tad citādi

Līdz šim šajā apmācībā mēs vienlaikus esam pārbaudījuši tikai vienu nosacījumu.

Tomēr, ja jums ir vairāki atkarīgi nosacījumi, varat izmantot priekšrakstu AND vai VAI ar IF nosacījumiem.

Tālāk ir sniegta nosacījuma AND/OR sintakse ar IF IF paziņojumu.

IF nosacījums1 UN nosacījums2 Tad true_code Citādi false_code End IF

Iepriekš minētajā kodā true_code tiek izpildīts tikai tad, ja ir izpildīts gan nosacījums1, gan nosacījums2. Pat ja viens no nosacījumiem ir nepatiess, tas izpildīs false_code.

Izmantojot OR, pat ja viens no nosacījumiem ir patiess, tas izpildīs true_code. Tikai tad, ja visi nosacījumi ir nepatiesi, tas izpilda false_code.

Tagad redzēsim, kā paziņojums UN un VAI darbojas kopā ar IF IF Else konstrukciju.

Pieņemsim, ka jums ir rezultāti diviem priekšmetiem, nevis vienam, un vēlaties pārbaudīt šādus nosacījumus:

  • Neizdevās - Ja kādā no priekšmetiem rezultāts ir mazāks par 35.
  • Iziet - Ja rezultāts ir lielāks vai vienāds ar 35, bet abos priekšmetos ir mazāks par 80.
  • Pass, ar atšķirību - Ja rezultāts abos priekšmetos ir lielāks par 35 un vienā vai abos priekšmetos ir lielāks vai vienāds ar 80.

Šeit ir kods, kas to darīs:

Sub CheckScore () Ja diapazons ("A1"). Vērtība <35 vai diapazons ("B1"). Vērtība <35 Tad MsgBox "Fail" ElseIf Range ("A1"). Vērtība <80 Un diapazons ("B1"). Vērtība <80 Tad MsgBox "Pass" Vēl MsgBox "Pass, ar atšķirību" End If End Sub

Iepriekš minētais kods izmanto gan OR, gan AND paziņojumus.

Jūs varat arī uzrakstīt šo pašu kodu ar nelielām izmaiņām (lietojot OR, nevis AND).

Sub CheckScore () Ja diapazons ("A1"). Vērtība <35 vai diapazons ("B1"). Vērtība 80 vai diapazons ("B1"). Vērtība> 80 Tad MsgBox "Pass, ar atšķirību" Else MsgBox "Pass" Beigas Ja End Sub

Abi iepriekš minētie VBA kodi sniegs jums tādu pašu rezultātu. Personīgi es dodu priekšroku pirmajam, jo ​​tam ir loģiska rezultātu pārbaude (bet tas esmu tikai es).

Izmantojot opciju Nav vienāds ar Ja tad

Visos iepriekš minētajos piemēros mēs esam izmantojuši nosacījumus, kas pārbauda, ​​vai vērtība ir vienāda ar norādīto vērtību vai nē.

Varat arī izmantot līdzīgus kodus, pārbaudot, ja vērtība nav vienāda ar noteiktu vērtību VBA kodā. Nav vienāds ar to, ko attēlo Excel VBA.

Lai redzētu praktisku lietošanas piemēru, apskatiet 1. piemēru zemāk.

Izmantojot Ja, tad citādi, izmantojot cilpas VBA

Līdz šim mēs esam apskatījuši dažus piemērus, kas ir labi, lai saprastu, kā paziņojumi “IF-THEN” darbojas VBA, tomēr praktiskajā pasaulē nav noderīgi.

Ja man jānovērtē skolēni, es to varu viegli izdarīt, izmantojot Excel funkcijas.

Tātad, apskatīsim dažus noderīgus un praktiskus piemērus, kas var palīdzēt automatizēt dažas lietas un būt efektīvākiem.

1. piemērs. Saglabājiet un aizveriet visas darbgrāmatas, izņemot aktīvo darbgrāmatu

Ja jums ir atvērtas daudzas darbgrāmatas un vēlaties ātri aizvērt visas, izņemot aktīvo darbgrāmatu, varat izmantot tālāk norādīto kodu,

Sub SaveCloseAllWorkbooks () Dim wb kā darbgrāmata katrai wb darbgrāmatās Ieslēgta kļūda tiek atsākta tālāk Ja wb.Name ActiveWorkbook.Name Tad wb.Save wb. Aizveriet beigas, ja nākamā wb End Sub

Iepriekš minētais kods saglabātu un aizvērtu visas darbgrāmatas (izņemot aktīvo).

Tā izmanto cilni Nākotnei, lai iet cauri visu atvērto darbgrāmatu kolekcijai, un pārbauda nosaukumu, izmantojot nosacījumu IF.

Ja nosaukums nav tāds pats kā darbgrāmatai, tā to saglabā un aizver.

Ja kādā no darbgrāmatām ir VBA kods un neesat to saglabājis kā .xls vai .xlsm, jūs redzēsit brīdinājumu (jo vba kodi tiek zaudēti, saglabājot to .xlsx formātā).

2. piemērs. Iezīmējiet šūnas ar negatīvām vērtībām

Pieņemsim, ka jums ir kolonna, kas pilna ar cipariem un vēlaties ātri izcelt visas šūnas ar negatīvām vērtībām sarkanā krāsā, to varat izdarīt, izmantojot zemāk esošo kodu.

Sub HighlightNegativeCells () Dim Cll kā diapazons katrai atlasītajai Cll, ja Cll.Value <0, tad Cll.Interior.Color = vbRed Cll.Font.Color = vbBalts beigas, ja nākamais Cll beigas Sub

Iepriekš minētais kods izmanto cilpu Par katru un pārbauda katru jūsu atlasītās šūnas. Ja šūnas vērtība ir negatīva, tā ir iezīmēta sarkanā krāsā ar baltu fonta krāsu.

3. piemērs - paslēpt visu darblapu, izņemot pašreizējo darblapu

Ja vēlaties ātri paslēpt visas darblapas, izņemot aktīvo, varat izmantot tālāk norādīto kodu.

Sub HideAllExceptActiveSheet () Dim ws kā darblapa katram ws šajā darbgrāmatā. Darblapas Ja ws.Name ActiveSheet.Name Tad ws.Visible = xlSheetHidden Next ws End Sub

Iepriekš minētais kods izmanto cilpu Par katru, lai izietu darblapu kolekciju. Tas pārbauda katras darblapas nosaukumu un slēpj to, ja tā nav aktīvā darblapa.

4. piemērs. Izņemiet ciparu daļu no burtciparu virknes

Ja šūnās ir burtciparu virknes un vēlaties no tās izvilkt ciparu daļu, varat to izdarīt, izmantojot tālāk norādīto kodu.

Funkcija GetNumeric (šūnaRef kā virkne) GetNumeric = Rezultāta beigu funkcija

Šis kods programmā Excel izveidos pielāgotu funkciju, kuru var izmantot darblapā (tāpat kā parasto funkciju).

Kur ievietot VBA kodu?

Vai vēlaties uzzināt, kur jūsu Excel darbgrāmatā atrodas VBA kods?

Programmai Excel ir VBA aizmugure, ko sauc par VB redaktoru. Jums ir nepieciešams kopēt un ielīmēt kodu VB redaktora moduļa koda logā.

Lai to izdarītu, veiciet tālāk norādītās darbības.

  1. Dodieties uz cilni Izstrādātājs.
  2. Noklikšķiniet uz opcijas Visual Basic. Tas atvērs VB redaktoru aizmugurē.
  3. VB redaktora Project Explorer rūtī ar peles labo pogu noklikšķiniet uz jebkura darbgrāmatas objekta, kurā vēlaties ievietot kodu. Ja neredzat Project Explorer, dodieties uz cilni Skats un noklikšķiniet uz Project Explorer.
  4. Dodieties uz Ievietot un noklikšķiniet uz moduļa. Tādējādi jūsu darbgrāmatai tiks ievietots moduļa objekts.
  5. Kopējiet un ielīmējiet kodu moduļa logā.

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

wave wave wave wave wave