VBA-da şərti operatorlar. Visual Basic İdarəetmə Makro Funksiyasında Şərti qurur, əgər
Visual Basic for Application (VBA) proqramında ifadələrin icrası qaydasını dəyişməyin bir neçə yolu var. VBA idarəetmə strukturları bir çox cəhətdən digər proqramlaşdırma dillərindəki oxşar strukturlara bənzəyir.Əsas VBA idarəetmə strukturları:
Nəzarət təlimatı Əgər Onda Yoxsa "Bitirsə
Bu təlimat müəyyən bir vəziyyətin (və ya şərtlər toplusunun) sınaq nəticələrindən asılı olaraq təlimatların icrası qaydasını dəyişir.
Misal:
Sub TestIfThen()
iData = "paşulka"
Əgər iData = "Excel"dirsə
MsgBox "Bu mesajı heç vaxt görməyəcəksiniz!!!"
ElseIf iData = "Ofis" Sonra
MsgBox "Təəssüf ki, siz də bu mesajı görməyəcəksiniz!!!"
Başqa
MsgBox "Bu mesaj hər halda görünəcək",iData
Bitərsə
Şərhlər:
Əgər- skanın başlanğıcını bildirən açar söz
iData- dəyəri yoxlanılacaq dəyişən
Sonra- çekin sonunu bildirən açar söz
MsgBox- mesaj
ElseIf- yeni taramanın başlanğıcını bildirən açar söz
Sonra- əlavə çekin sonunu göstərən açar söz
MsgBox- mesaj
Başqa- test nəticəsi müsbət olduqda icra edilən təlimatlar blokunun sonunu və nəticə mənfi olduqda yerinə yetirilən təlimatlar blokunun başlanğıcını bildirən açar söz.
MsgBox- mesaj
Bitərsə
If then Else "End If ifadəsində açar sözlər ElseIf Və Başqa isteğe bağlıdır.
Növbəti nəzarət təlimatı üçün
Bu təlimat müəyyən hərəkətləri lazımi sayda yerinə yetirməyə imkan verir. Belə təlimatlar adətən döngələr adlanır.
Misal:
Sub TestForNext()
iCount üçün = 1-dən 100-ə qədər Addım 2
i = i + 1
Sonrakı
Şərhlər:
üçün
iCount- döngənin təkrar sayını təyin edən dəyişən.
1
- ilkin sayğac dəyəri
Kimə- sayğacın başlanğıc və son qiymətini ayıran açar söz
100
- son sayğac dəyəri
addım- əks addımı təyin edən açar söz
2
- əks addım (nömrə)
Sonrakı- açar söz, ona çatdıqdan sonra sayğac dəyəri addım dəyəri ilə dəyişir, bundan sonra idarəetmə yenidən dövrənin əvvəlinə keçir.
MsgBox
For Next ifadəsində açar sözdür addım isteğe bağlıdır. Əgər o yoxdursa, əks icra addımı 1-ə bərabər olacaq.
vacibdirƏks addım bir nömrə olmalıdır. Əgər sayğac addımı mənfi ədəd kimi göstərilibsə, onda sayğac dəyəri hər dövrə ilə azalacaq.
Məsələn, geri sayma ilə:
Sub TestForNext2()
iCount üçün = 300 - 1 Addım -3
i = i + 1
iCount = 153 olarsa, Çıxın
Növbəti iCount
MsgBox "Təkrarların sayı:" & i
Diqqət edin:
Əgər iCount = 153 Sonra- bu VBA kodunda biz artıq bizə məlum olan If then Else təlimatından istifadə etdik
Üçün çıxın
Növbəti iCount- kodda açar sözdən sonra yerləşən dəyişən (sayğac) var. Bu sintaksis, bir qayda olaraq, VBA kodunda kifayət qədər oxşar təlimatlar varsa, bir döngənin sonunu vizual olaraq təyin etmək üçün istifadə olunur.
Wend nəzarət təlimat isə
Bu təlimat müəyyən bir şərt yerinə yetirildiyi müddətcə müəyyən hərəkətləri yerinə yetirməyə imkan verir.
Misal:
Alt TestWhileWend()
iCount iCount = iCount + 1 olarkən
Wend
Şərhlər:
ikən- dövrənin başlanğıcını bildirən açar söz
iCount - bu təlimatın icra olunacağı şərt
Wend
MsgBox- təkrarların sayı haqqında mesaj
Döngə nəzarəti təlimatını yerinə yetirin
Bu təlimat müəyyən hərəkətləri yalnız verilmiş şərt yerinə yetirildiyi müddətdə deyil, həm də əksinə, verilmiş şərt yerinə yetirilənə qədər yerinə yetirməyə imkan verir.
Misal:
Alt TestDoLoop()
iCount >= 100-ə qədər edin
iCount = iCount + 1
Döngə
MsgBox "Təkrarların sayı: " & iCount
Şərhlər:
Et- dövrənin başlanğıcını bildirən açar söz
qədər- şərtin mövcudluğunu göstərən açar söz
iCount >= 100- bu göstərişin icra olunacağı şərt
Döngə- döngənin sonu mənasını verən açar söz
MsgBox- təkrarların sayı haqqında mesaj
Sub TestDoLoop2()
Et
iCount = iCount + 1
Əgər iCount = 50 olarsa, Do-dan çıxın
iCount = 100-ə qədər döngə
MsgBox "Təkrarların sayı: " & iCount
Diqqət edin:
Əgər iCount = 50 Sonra- bu VBA kodunda biz yenidən bizə məlum olan If then Else təlimatından istifadə etdik
Do-dan çıxın- sikldən erkən çıxmaq mənasını verən təlimat
iCount = 100- bu göstərişin icra olunacağı şərt
Qeyd:
Döngənin sonunda göstərilən şərt onun ən azı bir dəfə yerinə yetirilməsinə zəmanət verir. While Wend, Do Loop təlimatları ilə diqqətli olun, çünki şərti səhv təyin etsəniz, demək olar ki, əbədi mobil telefon əldə edə bilərsiniz.
Case "End Select" idarəetmə təlimatını seçin
Bu ifadə dəyişənin və ya ifadənin dəyərinin nəticələrindən asılı olaraq bir neçə kod parçasından birini yerinə yetirir.
Misal:
Alt TestSelectCase()
Case iNumeric seçin
İş 1
İş 2, 5
MsgBox "Bu mesajı görməməlisiniz"
İş 10-dan 13-ə qədər
MsgBox "Bu mesajı görməməlisiniz"
Case > 14
MsgBox "Bu, görməli olduğunuz mesajdır"
Başqa Dava
MsgBox "Dəyişən Son Seçimdirsə, bu mesaj görünəcək
Şərhlər:
Case seçin
iNumeric- dəyəri icra üçün VBA kodu fraqmentinin seçilməsini müəyyən edən dəyişən və ya ifadə
İş 1- müqayisə üçün dəyərin ilk variantı.
Əgər dəyişənin qiyməti ona uyğun gəlirsə, o zaman Case-dən sonrakı kod fraqmenti yerinə yetiriləcək, lakin növbəti açar Case-dən əvvəl, onda təlimat öz işini tamamlayacaq. Əks halda, tarama davam edəcək.
İş 2, 5- mənanın ikinci variantı.
İş 10-dan 13-ə qədər- üçüncü məna variantı.
Case > 14- dördüncü məna variantı.
MsgBox- bu halda göstəriləcək mesaj
Başqa Dava- əvvəlki variantlardan heç biri uyğun gəlmirsə, kodun icrası mənasını verən açar sözlər.
Seçimi bitir- təlimatın sonunu bildirən açar söz
Select Case ifadəsində "End Select açar sözü Başqa Dava isteğe bağlıdır.
Hər bir sonrakı üçün nəzarət təlimatı
Bu təlimat hər bir ailə obyekti və ya massiv elementi ilə müəyyən hərəkətləri yerinə yetirməyə imkan verir.
Range obyekti ilə nümunə:
Sub TestForEachNextRange()
i = i + 1
iCell.Value = "Cell #" & i
!}
Sonrakı
MsgBox "Hüceyrələrin sayı:" & i
Şərhlər:
Hər biri üçün- təlimatın başlanğıcını göstərən açar sözlər
iCell- qrupun elementlərinin qiymətlərinin təyin olunduğu dəyişən (massiv və ya ailə) massiv elementləri ilə işləmək üçün dəyişən Variant tipinə aid olmalıdır.
In- dəyişəni qrupdan ayıran açar söz
Aralıq("A1:C5")- qrup, yəni. massiv və ya obyektlər ailəsi Döngənin təkrar sayı qrupa daxil olan elementlərin sayından asılıdır. və sonra bütün sonrakılar.
Sonrakı- açar söz, hansı idarəetməyə çatdıqda yenidən dövrənin əvvəlinə keçir.
MsgBox- qrup elementlərinin sayı haqqında mesaj.
Bu halda, Range obyektindəki xanaların sayının oxşar hesabından istifadə etmək ən yaxşı yol deyil, çünki bu obyekt bu tapşırığın öhdəsindən daha yaxşı gələcək bir xüsusiyyətə malikdir: Range obyekti: onun xüsusiyyətləri və metodları
Range obyekti ilə manipulyasiya nümunəsi:
Sub TestForEachNextRangeChanges()
Diapazondakı hər iCell üçün("A1:C5")
i = i + 1: iCell.Value = i
Əgər iCell.Value 5 olarsa
iCell.Font.Size = 15
iCell.Interior.ColorIndex = 50
ElseIf iCell.Value = 13 Və ya iCell.Value = 5 Sonra
iCell.Font.Size = 20
iCell.Interior.ColorIndex = 3
Başqa
iCell.Clear
Bitərsə
Diqqət edin:
- bu VBA kodunda xanadakı dəyərləri yoxlamaq üçün bizə artıq məlum olan If then Else təlimatından istifadə etdik.
- hansı şərtin testdən keçməsindən asılı olaraq, Range obyektinin müxtəlif xassələrindən istifadə edən müəyyən kod parçası yerinə yetirilir.
Worksheets ailəsi ilə nümunə:
Sub TestForEachNextSheet()
İş vərəqlərindəki hər bir iList üçün
i = i + 1
iNameList = iNameList & Chr(10) & iList.Name
Sonrakı
MsgBox "İş vərəqlərinin sayı: " & i & Chr(10) & _
"İş vərəqi adları: " & iNameList
Bu vəziyyətdə, iş vərəqlərinin sayının oxşar hesabından istifadə etmək ən yaxşı yol deyil, çünki bu obyekt də bu vəzifənin öhdəsindən daha yaxşı gələcək bir xüsusiyyətə malikdir.
Çox vaxt proqramın müəyyən yerində müəyyən şərtlərdən asılı olaraq müəyyən ifadələri yerinə yetirmək lazımdır. Bu xüsusiyyət, öz növbəsində qərar qəbul edən strukturlardan və döngələrdən ibarət olan idarəetmə konstruksiyalarından (və ya strukturlardan) istifadə etməklə Visual Basic-də həyata keçirilə bilər. Aşağıda iki mövcud qərar qəbuletmə konstruksiyasının ətraflı təsviri verilmişdir.
Əgər: Sonra qurun. Bu quruluşun bir neçə növü var. Hər hansı bir şərt yerinə yetirildikdə, bir ifadəni yerinə yetirmək lazımdırsa, aşağıdakı formanın konstruksiyasından istifadə etməlisiniz:
Şərt varsa Sonra ifadəsi
Şərtin yoxlanılmasının nəticəsi True qiyməti olduqda, onda xidmət sözündən sonra yerləşən ifadə yerinə yetirilir. Digər tərəfdən, şərti yoxladıqdan sonra False qiyməti alınarsa, növbəti ifadəni ardıcıllıqla yerinə yetirin. Bu strukturun bütün təsvir edilən parametrləri bir sətirdə göstərilməlidir.
Şərt yerinə yetirildikdə, bir deyil, bir neçə operatoru yerinə yetirmək lazımdırsa, aşağıdakı konstruksiyadan istifadə edilməlidir:
Şərtlər Əgər İfadələr Bitirsə
Əgər yoxlanılan şərt doğrudursa, Then açar sözündən sonra yerləşən ifadələr yerinə yetiriləcək. Digər tərəfdən, əgər şərt yanlışdırsa, bu konstruksiyadan sonra növbəti ifadə icra olunur. Operator blokunda yalnız bir ifadə olduğu halda, bu struktur yenə də End If xidmət ifadəsi ilə bitməlidir.
Müəyyən bir şərtin yoxlanılması nəticəsindən asılı olaraq müəyyən bir operatoru (və ya operatorlar blokunu) yerinə yetirmək lazımdırsa, Visual Basic-də aşağıdakı konstruksiyadan istifadə edilməlidir:
Şərtlər varsa, onda Operatorlar1 Başqa Operatorlar2 Sondur
Əgər şərt O zaman Operatorlar1 Başqa: Operatorlar2 Sondur
Əgər şərtin yoxlanılmasının nəticəsi True olarsa, onda Then açar sözündən sonra yerləşən bəyanat1 bloku yerinə yetiriləcək. Digər tərəfdən, əgər şərt yoxlaması Yanlış nəticə verirsə, o zaman Else xidmət sözündən sonra yerləşən ifadələr2 bloku yerinə yetiriləcək.
Verilmiş variantlardan ikincisində operatorlar bloku kimi ya bir operatordan istifadə etmək olar2 (sonra Else xidmət sözü ilə eyni sətirdə “:” işarəsindən sonra yazılır), ya da bir neçə (bu halda hər bir operator) ikincisi ilə başlayan ayrı sətirdə yazılır).
Visual Basic-də bir deyil, bir neçə şərt yoxlanıldıqdan sonra müəyyən bir hərəkətin (və ya hərəkətlər toplusunun) yerinə yetirilməsi lazım olduqda, aşağıdakı idarəetmə strukturundan istifadə edilməlidir:
Əgər şərt O zaman Operatorlar1 ElseIf şərt2 Sonra Operatorlar2 . . Bitərsə
If açar sözündən sonra yerləşən şərt1 doğrudursa, Then-dən sonra yerləşən ifadələr1 bloku yerinə yetirilir. Əgər yalandırsa, o zaman ElseIf xidmət sözündən sonra yerləşən şərt2 yoxlanılır, doğrudursa, operator2 bloku yerinə yetirilir və s. Şərtlərdən heç biri doğru deyilsə, yəni bütün yoxlamaların nəticəsi Yanlışdırsa, Else açar sözündən sonra yerləşən ifadələrN bloku yerinə yetiriləcək (bu blok isteğe bağlıdır).
Yuxarıdakı If:Then strukturuna əlavə olaraq, sınaqdan keçirilən şərtdən asılı olaraq iki dəyərdən birini qaytaran IIf funksiyasını da nəzərdən keçirməlisiniz.
Bu funksiyanın sintaksisi:
IIf(şərt, dəyər1, dəyər2)
Şərtin yoxlanılmasının nəticəsi True olduqda, funksiya 1 dəyərini, yoxlama Yanlış qaytardıqda isə nəticə qaytarılır - dəyər2. Misal üçün:
Dim intA Tam ədəd kimi, strA As String intA = 6 strA = IIf(intA Mod 2=0, "Cüt", "Qeyri-bərabər")
Əgər intA ədədi 2-yə qalıqsız bölünürsə, strA sətrinə “Çüt”, əks halda “Cüt deyil” qiyməti təyin ediləcək.
Seçin:İnşaat. Müəyyən bir şərt doğrudursa, yerinə yetirilməli olan bir neçə ifadə (və ya ifadələr bloku) olduqda, If:Then konstruksiyasını yazmaq olduqca çətin olacaq. Ona görə də belə hallarda proqramın oxunuşunu yaxşılaşdıran Select:Case strukturundan istifadə etməlisiniz. Onun dizaynı belə görünür:
Case dəyişənini seçin Case dəyərlər1 Operators1 Case values2 Operators2 . . . Seçimi bitir
Əgər dəyişəndə Case birinci açar sözündən sonra yerləşən dəyər1 varsa, o zaman ifadələr1 bloku icra olunur. Digər tərəfdən, dəyişənin məzmunu dəyər2-yə bərabərdirsə, o zaman operator2 bloku yerinə yetirilir və s. Dəyişənin məzmunu verilmiş qiymətlərin heç birinə bərabər olmadıqda, sözügedən konstruksiyada isteğe bağlı olan Case:Else xidmət ifadəsindən sonra yerləşən operatorN bloku yerinə yetirilir.
Bir dəyişənin bir neçə dəyəri üçün eyni operatorun (operatorlar blokunun) icrası lazım olduğu halda, bu dəyərlərin siyahısı Case açar sözündən sonra vergüllə ayrılaraq göstərilməlidir.
Misal üçün:
Case x Case 1'i seçin x=x+1 Case 2, 3, 4 x=10 Case Əks halda x=20 Son Seçin
Tək sətirli və çoxsətirli If...Then...Else ifadəsi konstruksiyaları və VBA Excel kodunda istifadə olunan IIf funksiyası - sintaksis, komponentlər, nümunələr.
Əgər...Onda...Başqa bəyanat
Operator Əgər...Sonra...Başqa yoxlanılan şərtlərin nəticələrindən asılı olaraq idarəetməni operator bloklarından birinə ötürmək üçün nəzərdə tutulmuşdur.
Bir xəttli tikinti
Operator Əgər...Sonra...Başqa açar sözlər olmadan bir sətirli konstruksiyada istifadə edilə bilər Başqa, Bitərsə.
Tək sətirli If...Sonra... sintaksisi
Əgər[vəziyyət] Sonra[operatorlar]Bir xəttli komponentlər Əgər... Onda...
- vəziyyət Doğru və ya Yalan;
- operatorlar vəziyyət dəyəri qaytarır Doğru;
Əgər komponent vəziyyət dəyəri qaytarır Yalan, tikinti operatorları bloku Əgər... Onda...
Misal 1
Sub primer1() Dim d Tam Ədəd kimi, a As String d = InputBox("1-dən 20-yə qədər rəqəm daxil edin", "Nümunə 1", 1) Əgər d > 10 olarsa, a = "" & d & " rəqəmi böyükdür 10" MsgBox və End Sub-dan çoxÇoxxətli tikinti
Çoxsətirli If...Then...Else konstruksiyasının sintaksisi
Əgər[vəziyyət] Sonra[operatorlar] ElseIf[vəziyyət] Sonra[operatorlar] ---------------- Başqa[operatorlar] BitərsəÇox xəttli dizaynın komponentləri Əgər...Sonra...Başqa:
- vəziyyət- açar sözdən sonra rəqəmli və ya sətir ifadəsi Əgər və ya ElseIf və bir boolean dəyəri qaytarır Doğru və ya Yalan;
- operatorlar- VBA Excel kodu ifadələri bloku, əgər komponent varsa icra olunur vəziyyət dəyəri qaytarır Doğru.
- nöqtəli xətt sətirdən əlavə tikinti bloklarını bildirir ElseIf [şərt] Sonra və simlər [operatorlar];
- açar sözdən sonra ifadələr bloku Başqa hər halda icra edilir, lakin xəttdən kod bloku Başqa və simlər [operatorlar] isteğe bağlıdır və buraxıla bilər.
Əgər komponent vəziyyət dəyəri qaytarır Yalan, tikinti operatorlarının aşağıdakı bloku Əgər...Sonra...Başqa atlanır və proqram nəzarəti kodun növbəti sətrinə keçirilir.
Çox xəttli dizaynın ən sadə versiyası Əgər...Sonra...Başqa:
Əgər[vəziyyət] Sonra[operatorlar] Başqa[operatorlar] BitərsəMisal 2
Sub primer2() Dim d Tam ədəd kimi, a As String d = InputBox("1-dən 40-a qədər rəqəm daxil edin", "Misal 2", 1) Əgər d< 11 Then a = "Число " & d & " входит в первую десятку" ElseIf d >10 Və d< 21 Then a = "Число " & d & " входит во вторую десятку" ElseIf d >20 Və d< 31 Then a = "Число " & d & " входит в третью десятку" Else a = "Число " & d & " входит в четвертую десятку" End If MsgBox a End Sub
IIf funksiyası
Funksiya IIf verilmiş şərti yoxlayır və testin nəticəsindən asılı olaraq dəyəri qaytarır.
Funksiya sintaksisi
IIf([şərt], [doğrudursa], [yalandırsa])IIf funksiyasının komponentləri
- vəziyyət- Boolean dəyərini qaytaran rəqəmli və ya sətir ifadəsi Doğru və ya Yalan;
- Doğrudursa IIf, Əgər vəziyyət qaytarılan dəyər Doğru;
- Əgər Yalan- funksiyanın qaytardığı dəyər IIf, Əgər vəziyyət qaytarılan dəyər Yalan.
Misal 3
Sub primer3() Dim d Tam Ədəd, a As String d = InputBox("1-dən 20-yə qədər rəqəm daxil edin", "Misal 3", 1) a = IIf(d)< 10, d & " - число однозначное", _ d & " - число двузначное") MsgBox a End Sub“Ləğv et” düyməsini kliklədikdə və ya xaç işarəsi olan nümunələrdən InputBox dialoq qutusunu bağladığınızda xəta yaranır, çünki bu hallarda o, boş sətir qaytarır. Tam dəyişən d üçün boş sətir təyin etmək xətaya səbəb olur. Dialoq qutusunda “OK” düyməsini sıxdığınız zaman VBA Excel avtomatik olaraq mətn formatında daxiletmə sahəsinə daxil edilmiş rəqəmləri d dəyişəninin rəqəmsal formatına çevirir.
Excel VBA-da istifadə olunan ən vacib şərti operatorlar operatorlardır Əgər... Onda Və Case seçin. Bu ifadələrin hər ikisi bir və ya bir neçə şərti sınaqdan keçirir və nəticədən asılı olaraq müxtəlif hərəkətləri yerinə yetirəcək. Sonra bu iki şərti operator haqqında daha çox danışacağıq.
Visual Basic-də "Əgər... Sonra" ifadəsi
Operator Əgər... Ondaşərti yoxlayır və əgər DOĞRU olarsa, müəyyən edilmiş hərəkətlər toplusu yerinə yetirilir. Şərt yalnış (YANLIŞ) olduqda yerinə yetirilməli olan hərəkətlər toplusu da müəyyən edilə bilər.
Operator sintaksisi Əgər... Onda bunun kimi:
Əgər Vəziyyət 1 Sonra
Şərt 1 yerinə yetirildikdə hərəkətlər
ElseIf Vəziyyət 2 Sonra
Şərt 2 yerinə yetirildikdə hərəkətlər
Başqa
Şərtlərdən heç biri yerinə yetirilmədikdə hərəkətlər
Bitərsə
Bu ifadədə elementlər ElseIf Və Başqa lazım olmadıqda operator şərtlərindən istifadə edilə bilməz.
Aşağıda operatorun istifadə etdiyi bir nümunə verilmişdir Əgər... Onda Aktiv xananın doldurma rəngi tərkibindəki dəyərdən asılı olaraq dəyişir:
Əgər ActiveCell.Value< 5 Then ActiveCell.Interior.Color = 65280 "Ячейка окрашивается в зелёный цвет ElseIf ActiveCell.Value < 10 Then ActiveCell.Interior.Color = 49407 "Ячейка окрашивается в оранжевый цвет Else ActiveCell.Interior.Color = 255 "Ячейка окрашивается в красный цвет End If
Qeyd edək ki, şərt doğru olduqdan sonra şərti ifadənin icrası dayandırılır. Buna görə də, əgər dəyişənin dəyəri ActiveCell 5-dən az olduqda, birinci şərt doğru olur və hüceyrə yaşıl rəngə boyanır. Bundan sonra bəyanatın icrası Əgər... Onda kəsilir və qalan şərtlər yoxlanılmır.
Visual Basic-də Case Statement seçin
Operator Case seçin operatora bənzəyir Əgər... Onda ki, o, həm də şərtin doğruluğunu yoxlayır və nəticədən asılı olaraq, variantlardan birini seçir.
Operator sintaksisi Case seçin bunun kimi:
Case seçin İfadə
Case Dəyər 1
İfadənin nəticəsi Dəyər1-ə uyğundursa, hərəkətlər
Case Dəyər 2
İfadənin nəticəsi Dəyər2 ilə uyğun gəlirsə, hərəkətlər
…
Başqa Dava
İfadənin nəticəsi sadalanan Dəyər seçimlərindən heç birinə uyğun gəlmirsə, hərəkətlər
Seçimi bitir
Element Başqa Dava isteğe bağlıdır, lakin gözlənilməz dəyərləri idarə etmək tövsiyə olunur.
Aşağıdakı nümunədə konstruksiyadan istifadə etməklə Case seçin Cari xananın doldurma rəngi içindəki dəyərdən asılı olaraq dəyişir:
Case ActiveCell.Value Case is seçin<= 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
Yuxarıdakı nümunə bir element üçün müxtəlif yollarla necə dəyər təyin edə biləcəyinizi göstərir Case dizaynda Case seçin. Bu üsullar:
Case Is<= 5 | Beləliklə, açar sözdən istifadə etməklə Case Is dəyərin uyğun olub olmadığını yoxlaya bilərsiniz İfadələri formanın vəziyyəti <=5 . |
İş 6, 7, 8, 9 | Beləliklə, dəyərin uyğun olub olmadığını yoxlaya bilərsiniz İfadələri sadalanan dəyərlərdən biri ilə. Siyahıda göstərilən dəyərlər vergüllə ayrılır. |
İş 10 | Bu, dəyərin uyğun olub olmadığını yoxlayır İfadələri verilmiş dəyərlə. |
İş 11-20 | Beləliklə, dəyərin uyğun olub olmadığını yoxlamaq üçün ifadə yaza bilərsiniz İfadələri formanın vəziyyəti 11-dən 20-yə qədər(“11.” bərabərsizliyinə ekvivalentdir<=значение<=20”). |
Başqa Dava | Bu kimi, açar sözdən istifadə edərək Başqa, dəyərinin olması halında hərəkətlər göstərilir İfadələri sadalanan variantlardan heç birinə uyğun gəlmir Case. |
Şərtlərdən biri tapılan kimi müvafiq hərəkətlər yerinə yetirilir və strukturdan çıxır Case seçin. Yəni istənilən halda sadalanan filiallardan yalnız biri icra olunacaq Case.
Şərtlər proqramlaşdırmada çox faydalıdır, çünki onlar bizə müəyyən edilmiş meyarlardan asılı olaraq hərəkətləri yerinə yetirməyə imkan verir (eyni prinsip aşağıdakı kimi istifadə olunur). ƏGƏR Excel funksiyaları).
Şərti təyin edən ən mühüm funksiyadır ƏGƏR və indi bunun necə işlədiyini görəcəyik:
Əgər [ŞƏRT BURADA] O zaman "=> ƏGƏR şərt doğrudursa, ONDA "Təlimatlar əgər doğrudursa, Else"=> ALSE "Yanlışsa, təlimatlar Sondursa
Gəlin praktikliyə keçək və dəyişən dərsdə istifadə etdiyimiz nümunəyə qayıdaq. Bu prosedurun məqsədi xanada göstərilən sətirdən dəyəri ehtiva edən dialoq qutusunu açmaq idi F5:
Bir hüceyrəyə hərf daxil etsəniz F5, bu xətaya səbəb olacaq. Biz bunun qarşısını almaq istəyirik.
Alt dəyişənlər () "Dəyişənlərin elan edilməsi Soyadı sətir kimi, ad_ad sətir kimi, yaş tam ədəd, sıra_nömrəsi tam ədəd kimi "Dəyişənlərə qiymətlərin təyin edilməsi sətir_nömrəsi = Aralıq("F5") + 1 soyadı = Hüceyrələr(sətir_nömrəsi, 1) ad = Hüceyrələr(sətir_nömrəsi , 2) yaş = Hüceyrələr(sətir_nömrəsi, 3) "Dialoq qutusu MsgBox soyadı & " " & ad_ad & "," & yaş & "illər" Son Alt
Daxil edilmiş dəyərin xanada olub-olmadığını yoxlayacaq şərt əlavə edək F5 kod icra edilməzdən əvvəl nömrə.
Funksiyadan istifadə edəcəyik IsNumeric vəziyyəti yoxlamaq üçün:
Alt dəyişənlər () "Əgər mötərizədəki dəyər (F5 xanası) rəqəmlidirsə (VƏ BUNA GÖRƏ ƏGƏR ŞƏRTİ DOĞRUDURsa), onda "sonradan gələn ifadələri yerinə yetirin, THEN If IsNumeric (Range ("F5")) Sonra "Dəyişənlərin Elan edilməsi Dim soyadı kimi Sətir, ad_ad Sətir kimi, yaş Tam ədəd, sıra_nömrə Tam ədəd kimi "Dəyişənlərə dəyərlərin təyin edilməsi sətir_nömrəsi = Aralıq ("F5") + 1 soyadı = Hüceyrələr (sətir_nömrəsi, 1) ad_ad = Hüceyrələr (sətir_nömrəsi, 2) yaş = Hüceyrələr ( sətir_nömrəsi, 3) "Dialoq Qutusu MsgBox soyadı & " " & birinci_ad & "," & yaş & "illər" Sondursa Son Alt
Əgər qoyduğumuz şərt yerinə yetirilmirsə, təlimatları da yazmalıyıq:
Alt dəyişənlər () Əgər IsNumeric (Range ("F5")) Əgər "Şərt doğrudursa "Dəyişənlərin elan edilməsi Soyadı Sətir kimi, ad_ad Sətir kimi, yaş Tam Ədəd, sətir_nömrəsi Tam Ədəd kimi "Dəyişənlərə qiymətlərin təyin edilməsi sətir_nömrəsi = Aralıq ("F5") + 1 soyad = Xanələr (sətir_nömrəsi, 1) ad_ad = Hüceyrələr (sətir_nömrəsi, 2) yaş = Hüceyrələr (sətir_nömrəsi, 3) "Dialoq qutusu MsgBox soyadı & " " & birinci_ad & "," & yaş & " illər " Əks halda "Şərt yerinə yetirilməyibsə "Dialoq qutusu: MsgBox xəbərdarlığı "Daxil edilmiş dəyər " & Aralıq ("F5") & " etibarlı deyil!" "F5 Range ("F5") xanasının məzmununun silinməsi). ClearContents End If End Sub
İndi qeyri-rəqəmli dəyərlər heç bir problem yaratmayacaq.
16 sıra verilənlərdən ibarət massivimizlə işləyərək növbəti addımımız row_number dəyişəninin "2-dən böyük və ya bərabər" və "17-dən kiçik və ya bərabər" olub olmadığını yoxlamaq olacaq.
Ancaq əvvəlcə müqayisə operatorlarına nəzər salaq:
və bu faydalı operatorlar:
İndi yuxarıdakı şərtlərdən birini əlavə edək VƏ Müqayisə operatorları arasında:
Alt dəyişənlər () Əgər IsNumeric (Range ("F5")) Sonra "Əgər ədədi dəyər Dim soyadı Sətir kimi, ad_ad Sətir kimi, yaş Tam Ədəd kimi, sətir_nömrəsi Tam ədəd kimi sətir_nömrəsi = Aralıq ("F5") + 1 Əgər sətir_nömrəsi > = 2 Və sətir_nömrəsi
Əgər makromuzu daha praktik etmək istəyiriksə, əvəz edə bilərik 17 sətirlərin sayını ehtiva edən dəyişənə. Bu, hər dəfə bu limiti dəyişmədən seriala sətirlər əlavə etmək və silmək imkanı verəcəkdir.
Bunu etmək üçün bir dəyişən yaratmalıyıq nb_sətirlər və bu xüsusiyyəti əlavə edin.
Bu halda funksiyadan istifadə edirik WorksheetFunction.CountA funksiyasının analoqu olan COUNTA Excel-in özündə.
Biz istəyirik ki, bu funksiya birinci sütundakı boş olmayan xanaların sayını saysın və nəticədə dəyişən dəyəri yazsın. nb_sətirlər:
Alt dəyişənlər () Əgər IsNumeric (Range ("F5")) Sonra "ƏGƏR NUMBER Dim soyadı Sətir kimi, ad_ad Sətir kimi, yaş Tam Ədəd kimi, sətir_nömrəsi Tam Ədəd kimi, sətir_nömrəsi Tam Ədəd kimi Dim nb_sətirlər Tam Ədəd kimi sətir_nömrəsi = Aralıq ("F5") + 1 nb_sətirlər = WorksheetFunction.CountA (Range ("A:A")) "Sıra sayma funksiyası Əgər sətir_nömrəsi > = 2 və sətir_nömrəsi
ElseIf
ElseIf IF əmrindən sonra əlavə şərtlər əlavə etməyə imkan verir:
Əgər [ŞƏRT 1] Onda "=> ƏGƏR şərt 1 doğrudursa, ONDA "Təlimatlar 1 ElseIf [ŞƏRT 2] Onda "=> ƏGƏR şərt 1 yanlışdırsa, lakin şərt 2 doğrudursa, onda "Təlimatlar 2 Else" => ELSE " Təlimatlar 3 Əgər bitərsə
Əgər ŞƏRT 1 icra, Təlimat 1 icra olunacaq və ifadəni tərk edəcək ƏGƏR(bu ilə başlayır ƏGƏR və End If) ilə bitir). Əgər ŞƏRT 2 dəyərini alır" yalan ", sonra icra olunacaq Təlimat 2 və öz növbəsində geri dönərsə " yalan ", Sonra Təlimat 3(altında Başqa) icra olunacaq.
Alt ballar_şərh () "Dəyişənlər Dim qeyd Tam ədəd kimi, hesab_şərh olaraq Sətir qeydi = Aralıq ("A1") "Qəbul edilən hesaba əsaslanan şərhlər Əgər qeyd = 6 O zaman score_comment = "Möhtəşəm top!" ElseIf not = 5 Sonra ball_comment = "Yaxşı xal" ElseIf qeyd = 4 Sonra ball_comment = "Qənaətləndirici xal" ElseIf not = 3 Sonra score_comment = "Qeyri-qənaətbəxş xal" ElseIf not = 2 Sonra score_comment = "Pis ball" ElseIf qeyd = 1 Sonra xal_comment = "Dəhşətli xal" Else score_comment = "Sıfır xal" Əgər "B1 xanasındakı şərh Aralığı ("B1") = ball_comment Son Alt
seçin
İstifadə etmək üçün alternativ var Əgərçoxları ilə ElseIf göstərişlər, yəni əmr seçin, bu tip vəziyyətlər üçün daha uyğundur.
Operatorla makro nümunəsinə baxaq seçin:
Alt ballar_şərh () "Dəyişənlər Dim qeyd Tam ədəd kimi , hesab_şərh olaraq Simli qeyd = Aralıq ("A1") "Alınan hesaba əsaslanan şərhlər İş qeydini seçin "
Qeyd etmək lazımdır ki, digər müqayisə operatorlarından da istifadə edə bilərik:
Case >=6 "əgər dəyər >=6 olarsa
Müxtəlif mənaları olan nümunələr:
Case Is = 6, 7 "əgər dəyər = 6 və ya 7 olarsa, 6, 7 "dəyər 6 və ya 7 deyilsə, 6-dan 10-a qədər "əgər dəyər = 6-dan 10-a qədər istənilən ədəddirsə