EĞER işlevi VBA'da tüm ifadelerin en sık kullanılanlarından biridir. IF işlevi, belirtilen koşulun karşılanıp karşılanmadığını kontrol eder. VBA'daki IF işlevi, Excel'de çalıştığından biraz farklı bir şekilde çalışır. Excel'de EĞER işlevi iki şey yapar: Verilen koşulun DOĞRU veya YANLIŞ olarak değerlendirilip değerlendirilmediğini kontrol eder ve ardından değerlendirmeye dayalı olarak kullanılacak bir değer döndürür, yani EĞER ( koşul, iade_değer_if_koşul_doğru, dönüş_değer_yse_şart_ yanlış). Bununla birlikte, VBA'daki IF işlevi yalnızca ilk kısmı yapar, yani. koşulun DOĞRU veya YANLIŞ olarak değerlendirilip değerlendirilmediğini kontrol edin. Her iki senaryoda da ek THEN deyimi kullanılarak belirtildiği şekilde uygulanacak adımlar.

VBA'da basit bir EĞER işlevi kullanma

İşte bir örnek EĞER işlevi... Bu VBA kodu parçası, yalnızca belirtilen koşulun (yani 1\u003e 4) DOĞRU veya YANLIŞ olarak değerlendirilip değerlendirilmediğini kontrol eder. Bu durumda, sadece koşul TRUE olarak değerlendirildiğinde tamamlanacak adımları belirledik. Bu durumda, sonuç ekranda görüntülenecektir. İşlev FALSE olarak değerlendirilirse, VBA kodu hiçbir şey yapmaz.

1
2
3
4
5

Alt IF_FUNCTION ()
7\u003e 1 ise
MsgBox "7, 1'den büyük"
Bitiş Eğer
Aboneliği Sonlandır

SONRA deyimi esasen, hemen ardından gelen adımların, koşulun DOĞRU olarak değerlendirilmesi durumunda yürütüleceğini belirten bir yönergedir.

IF işlevi tipik olarak, uygulamanın IF işlevinin son satırı olduğunu bilmesini sağlayan bir END IF bildirimi ile biter. Aşağıda, IF işlevinin biraz daha kısa bir biçimi verilmiştir. END IF ifadesinin bunda kaldırıldığına ve bu nedenle üç satır kodun tek satırda birleştirildiğine dikkat edin.

Alt IF_FUNCTION_SHORT ()
7\u003e 1 ise MsgBox "7 1'den büyüktür"
Aboneliği Sonlandır

Bununla birlikte, bu form yalnızca hiçbir şey olmadığında kullanılmalıdır BAŞKA veya BAŞKA EĞER ifadelere ihtiyaç vardır. Şimdi ne olduklarına ve EĞER işlevini geliştirmeye nasıl yardımcı olduklarına bakalım.

VBA'da ELSE ile bir IF işlevi kullanma

Yukarıda verilen örnekte, EĞER işlevinin yalnızca koşul TRUE olarak değerlendirildiğinde adımlar gerçekleştirebileceğini gördük. Ama ya koşullardan herhangi biri karşılandığında uygulanacak adımları belirtmek isteseydik. Bir IF işlevinden dallanma elde etmenin bir yolu ELSE ifadesini kullanmaktır. Basitçe ifade etmek gerekirse, ELSE ifadesi, IF yan tümcesinde belirtilen koşul FALSE olarak değerlendirildiğinde uygulamanın ELSE bloğunda belirtilen adımları yürütmesine neden olur.

Aşağıdaki VBA kodu örneğinde, IF işlevindeki koşul yanlış olarak değerlendirilir, ELSE bloğunda belirtilen adımlar, ekranda “1 4'ten küçük” mesajının görüntülenmesi sonucu yürütülür. Tümünün birbiri ardına yürütülmesi için bloğa birden fazla adım eklenebilir.

1
2
3
4
5
6
7

Alt IF_ELSEIF_FUNCTION ()
1\u003e 4 ise

Başka:
MsgBox "1, 4'ten küçük"
Bitiş Eğer
Aboneliği Sonlandır

ELSEIF ve ELSE ile bir IF işlevi kullanma: VBA'da

ELSE ifadesi ELSEIF ifadeleri tarafından desteklenebilir. Genellikle belirli koşulları kontrol etmek için kullanılırlar ve tümü FALSE olarak değerlendirilirse, ELSE koşulunda belirtilen adımlar sonunda yürütülür. IF ifadesi belirli bir koşulu kontrol edecektir. Bu koşulun YANLIŞ olduğu ortaya çıkarsa, ilk ELSEIF ifadesinde belirtilen koşul kontrol edilecektir. Bunun da YANLIŞ olduğu ortaya çıkarsa, ikinci ELSEIF ifadesinde belirtilen koşul kontrol edilir ve bu böyle devam eder. IF ve ELSEIF deyimlerinde belirtilen tüm koşullar YANLIŞ çıkarsa, varsayılan olarak son ELSE: bloğu altında belirtilen adımlar yürütülür. Birden fazla ELSEIF ifadesi varsa, TRUE olarak değerlendirilen ilk ifadenin çalıştırılacağını ve tamamlandığında kod yürütmenin END IF ifadesine taşınacağını lütfen unutmayın. DOĞRU olarak değerlendirilen birden çok ELSEIF koşulu olsa bile, yalnızca DOĞRU olarak değerlendirilen ilk koşul çalıştırılacaktır.

1
2
3
4
5
6
7
8
9
10
11


Eğer< \u003e Sonra
MsgBox "1, 4'ten büyük"
ElseIf< \u003e Sonra

ElseIf< \u003e Sonra

Başka< >:

Bitiş Eğer
Aboneliği Sonlandır

Aşağıda gösterilen örnekte, önce IF koşulu kontrol edilir. YANLIŞ olarak değerlendirildiği için, ilk ELSEIF koşulu değerlendirilir, ardından ikincisi gelir. Hiçbiri DOĞRU olarak değerlendirilmediğinden, ELSE: koşulunda belirtilen adımlar yürütülür.

1
2
3
4
5
6
7
8
9
10
11

Alt IF_ELSEIF_ELSE_FUNCTION ()
1\u003e 4 ise
MsgBox "1, 4'ten büyük"
Aksi takdirde 2\u003e 4 Sonra
MsgBox "2, 4'ten büyük"
Aksi takdirde 3\u003e 4 ise
MsgBox "3, 4'ten büyük"
Başka:
MsgBox "1, 2 veya 3, 4'ten küçük"
Bitiş Eğer
Aboneliği Sonlandır

Hızlı İpucu - IF ifadelerinin daha hızlı çalışmasını sağlama

Her iki kod parçası da benzer görünüyor. İkinci işlevdeki iki ELSEIF koşulu değiştirildi. Aşağıdaki VBA kodu parçalarından hangisinin daha hızlı çalıştığını düşünüyorsunuz?:
Bitiş Eğer
Sonraki ben
Mesaj Kutusu Zamanlayıcısı - t
Aboneliği Sonlandır

Cevap, ikincisinin birinciden çok daha hızlı çalışmasıdır. Neden? Çünkü ikincisi, DOĞRU olarak değerlendirilen bir koşul bulmadan önce daha az kod satırından geçmek için uygulamaya ihtiyaç duyar. İlk ELSEIF koşulunun, eğer DOĞRU bulunursa çalıştırılacağını ve diğer koşulların hiçbirinin, aynı zamanda DOĞRU olarak değerlendirilseler bile değerlendirilmediğini unutmayın. VBA kodunun ilk parçasında, 6. satırdaki ELSEIF işlevi TRUE olarak değerlendirilirken, ikinci satır 5 kriterleri karşılar. Temelde, koşul DOĞRU olarak değerlendirilme olasılığı ne kadar yüksekse, VBA koduna o kadar erken yerleştirilmelidir, diğer her şey aynıdır.

Temel VBA Operatörleri

Yorumlar (0)

3.1. Operatör kayıt kuralları

Operatörleri kaydederken aşağıdaki kurallara uymanız gerekir:

Her yeni ifade yeni bir satıra yazılır.

Bir satıra birden çok operatör yazmak için, bunları iki nokta üst üste (:) ile ayırın.

Operatör bir satıra sığmazsa, satırın sonuna bir boşluk ve alt çizgi (_) koymalı ve ardından bir sonraki satıra sığmayan kısma devam etmelisiniz.

3.2. Atama operatörü

Atama operatörü, bir değişkene yeni bir değer atanması gerektiğinde kullanılır. Aşağıdaki sözdizimine sahiptir:

DEĞİŞKEN İSMİ= İFADE

Önce sağ taraftaki ifade değerlendirilir ve ardından sonuç sol taraftaki değişkene atanır.

Örneğin... Atama operatörünü kullanarak aşağıdaki matematiksel ifadeyi yazın:

VBA'da bu ifade aşağıdaki operatör olarak yazılabilir:

Y \u003d a ^ (1/3) + (a ^ 2 + Exp (-b)) / (Sin (a) ^ 2-Log (b))

3 .3. I / O operatörleri

3 .3.1. MsgBox operatörü ve işlevi

Şebeke MsgBox iletişim kutusundaki bilgi çıkışını gerçekleştirir ve düğmeye basan kullanıcı için bekleme modunu ayarlar

Aşağıdaki sözdizimine sahiptir:

MsgBox Mesaj [, Düğmeler] [, Başlık]

Argümanlar:

İleti - pencerede neyin görüntüleneceğini belirten gerekli bir argüman duyuru... Bir işaret ile birleştirilmiş birkaç metin satırından oluşabilir & ... Bu argümandaki kullanım Chr (13) bilgileri görüntülerken yeni bir satıra götürür.

Düğmeler - bu bağımsız değişkenin değeri, pencerede görünen düğme kategorilerini belirler. Düğmenin bağımsız değişkeninin değeri, pencerede herhangi bir simgenin görünüp görünmediğini de belirler. Mesaj penceresinde hangi düğmelerin görüntüleneceğini belirtmezseniz, OK düğmesine karşılık gelen varsayılan değer kullanılır. Tablo 3.1, mesaj penceresindeki olası düğme ve simge kombinasyonlarını gösterir.

Başlık - pencerenin başlığını ayarlar.

Fonksiyon MsgBox iletişim kutusunda hangi düğmenin tıklandığını gösteren bir Tamsayı döndürür.

Tablo 3.1. Bir düğme değişkeni için geçerli değerler

Görüntüle

Argüman

Tamam düğmesi

Tamam ve İptal düğmeleri

Evet ve Hayır düğmeleri

Evet, Hayır ve İptal düğmeleri

Durdur, Yinele ve Yoksay düğmeleri

VbAbortRetryIgnore

Yinele ve İptal düğmeleri.

Bilgi işareti

Soru işareti

Ünlem işareti

Örneğin... Güncel tarih hakkında bir mesaj görüntüleyin.

MsgBox "Bugün takvimde" & Tarih, "Dikkat"

Sonuç olarak, aşağıdaki pencere görüntülenecektir (Şekil 3.1).

Tamam düğmesini tıkladıktan sonra, mesaj kutusu kapanacak ve program çalıştırma, MsgBox'a yapılan çağrının hemen arkasındaki ifadeden devam edecektir.

3.3.2. Fonksiyon InputBox

Fonksiyon InputBoxgiriş penceresini kullanarak değişken değerleri girer ve aşağıdaki sözdizimine sahiptir:

Değişken ismi = InputBox (Mesaj [, Başlık] )

Argümanlar:

İleti - gerekli argüman. Pencerede, genellikle girilen değerin anlamını açıklayan bir bilgi mesajı ayarlar

Başlık - pencerenin başlığını ayarlar.

Örneğin, Klavyeden N değişkeninin değerini 10 varsayılan değeriyle girin.

Bunu yapmak için aşağıdaki operatörü kullanabilirsiniz:

N \u003d InputBox ("Enter N", "Başlangıç \u200b\u200bverilerinin girişi", 10)

Sonuç olarak, N değişkeninin değerini girmek için aşağıdaki pencere açılacaktır (Şekil 3.2).

Varsayılan değer kullanıcıya uygunsa, Tamam düğmesine tıkladıktan sonra giriş penceresi kapanacak, değişken N'ye 10 değeri atanacak ve program yürütmesi, aramanın hemen arkasındaki operatörden devam edecektir. InputBox.

Varsayılan değer kullanıcıya uymuyorsa, Tamam düğmesine tıklamadan önce, değişken N için istenen değeri girmelisiniz.

3 .four. Koşullu EĞER ifadesi

Dallanma hesaplama sürecini VBA'da uygulamak için operatör kullanılır Eğer… O zaman… Aksi takdirde, bu durum kontrolünün en basit şeklidir. Aşağıdaki sözdizimine sahiptir:

EğerŞART SonraOPERATOR_1 ElseOPERATOR_2

OPERATOR_1 eğer idam edilir ŞARTtrue, aksi takdirde yürütüldü OPERATOR_2. Bu durumda If… Then… Else ifadesi tek satırda yazılır.

ŞART bir boole ifadesidir. Bir ifadenin sonucu her zaman mantıksaldır. İfade basit veya karmaşık olabilir. Kaydederken basit koşullar Tabloda belirtilen ilişkinin tüm olası işlemleri kullanılabilir. 3.2.

Tablo3 .2. Mantıksal ilişki

Operasyon

İsim Soyisim

İfade

Sonuç

A, B'ye eşitse doğrudur

A, B'ye eşit değilse doğrudur

A, B'den büyükse doğrudur

A, B'den küçükse doğrudur

Daha fazla veya eşit

A, B'den büyük veya B'ye eşitse doğrudur

Daha az veya eşit

A, B'den küçük veya B'ye eşitse doğrudur

Karmaşık koşullar uygulanarak basit olanlardan oluşur mantıksal işlemler ve parantezler. Mantıksal işlemlerin listesi tabloda verilmiştir. 3.3.

Tablo3 .3. Mantıksal işlemler

İsim Soyisim

İfade

Sonuç

Mantıklı
olumsuzluk

Mantıksal AND

Mantıksal VEYA

Koşullu bir ifadede, herhangi bir ifade yerine bir ifade bloğu kullanılmasına izin verilir. Bu durumda, koşullu operatör:

EğerŞART Sonra

OPERATOR_BLOCK_1

OPERATOR_BLOCK_2

Ben bitirf

Koşullu bir ifadede birkaç koşul kontrol edilebilir. Bu durumda, koşullu operatör:

EğerCONDITION_1 Sonra

OPERATOR_BLOCK_1

ElseIfCONDITION_2Sonra

OPERATOR_BLOCK_2

Başka

SonEğer

örnek 1... Algoritma için programın bir bölümünü Şek. 3.3.

Örnek 2. Algoritma için programın bir bölümünü Şek. 3.4.

3.5. Vaka bildirimi seçin

Select Case deyimi, sonlu bir dizi geçerli değer içeren bazı ifadelerin değerine bağlı olarak farklı eylemler gerçekleştirmeniz gerektiğinde kullanmak için uygundur. Aynı zamanda koşullu ifadelere de atıfta bulunur, ancak farklı bir biçime sahiptir:

Vakayı Seçin TESTED_EXPRESSION

Durum VALUES_1

OPERATORS_1

Durum DEĞERLER_ 2

OPERATÖRLER_ 2

. . .

Durum VALUES_N

OPERATÖRLER_N

[ DurumBaşka

AKSİ TAKDİRDE_ OPERATÖRLER]

Son Seçimi

TESTED_EXPRESSION gerçek dışında herhangi bir skaler tipte olabilir. DEĞERLER virgülle ayrılmış rastgele sayıda değer veya aralıktan oluşur.

Bir tür DEĞERLER türle eşleşmeli TESTED_EXPRESSION.

İlk olarak hesaplar TESTED_EXPRESSION... Değeri değerlerden biriyle eşleşirse VALUES_I, sonra OPERATÖRLER_I Son Seçimi... Değeri herhangi bir değerle eşleşmiyorsa VALUES_I, sonra DİĞER_OPERATÖRLER ve kontrol, sonrasında bekleyen operatöre aktarılır Son Seçimi

Örneğin. Algoritma için programın bir bölümünü Şek. 3.5, n değişkeninin değerine bağlı olarak S değişkeninin değerini belirler.

3.6. Döngü Operatörleri

Döngüsel bir hesaplama sürecini uygulamak için, yani bir veya daha fazla operatörün çoklu yürütülmesi için döngü operatörü kullanılır İçin… Sonrakiaşağıdaki sözdizimine sahip olan:

İçinSAYAÇ \u003d START_VALUE TÖCON_VALUE AdımADIM

OPERATÖR BLOĞU

OPERATÖR BLOĞU

SonrakiSAYAÇ

For ... Next döngüsü, değişkenin değerleri üzerinde yinelenir SAYAÇ, döngünün bir parametresi olan, belirtilen değişim adımı ile baştan bitiş değerine kadar. Bu, döngü gövdesinin ifade bloğunun sayacın her yeni değerinde yürütülmesini sağlar. Eğer bir AdımADIMyapımda yoktur, bu durumda varsayılan olarak adımın 1 olduğu varsayılır. Operatöre göre Çıkışdaha önce döngü ifadesinden çıkmak mümkündür SAYAÇson değere ulaşır. *

Bir dizi benzer nesneden, örneğin bir aralıktan veya dizi öğelerinden hücreler üzerinde yineleme yapmak için döngü operatörünü kullanmak uygundur. İçin ...Her biri ... Sonraki.

Her biri içinEleman İçindeGrup

BLOK_ OPERATÖRLER

OPERATÖR BLOĞU

SonrakiEleman

VBA'da, önceden belirlenmiş sayıda tekrar içeren döngüleri düzenlemek için diğer döngü operatörleri kullanılır:

ön koşullu döngüler - YapmakSüreDöngü,

YapmakA kadarDöngü;

son koşullu döngüler - YapmakDöngüSüre,

YapmakDöngüA kadar.

Bu döngü ifadelerinin sözdizimi aşağıdadır:

"Ön koşullu döngüYapmak Süre Döngü

YaparkenŞART

OPERATÖR BLOĞU

OPERATÖR BLOĞU

"Ön koşullu döngüYapmak A kadar Döngü

YapmakA kadarŞART

OPERATÖR BLOĞU

OPERATÖR BLOĞU

"Son koşullu döngüYapmak Döngü

BLOK_ OPERATÖRLER

OPERATÖR BLOĞU

DöngüŞART

"Son koşullu döngüYapmak Döngüye kadar

BLOK_ OPERATÖRLER

OPERATÖR BLOĞU

Döngüye kadarŞART

Şebeke YapmakWhile ... Döngüolduğu sürece bir ifade bloğunun birden çok tekrarını sağlar ŞART saygı duyulur ve operatör



Diğer Haberler

Koşullu operatör

Koşullu operatörVBA belirli bir koşulu kontrol etmenize ve kontrolün sonuçlarına bağlı olarak bir veya başka bir eylem gerçekleştirmenize olanak sağlar. Bu nedenle, koşullu operatör, hesaplama sürecini dallara ayırmanın bir yoludur.

VBA'da 2 tür koşullu operatör vardır: doğrusal ve blok.

1. Doğrusal koşullu operatör, bazı koşullar doğruysa herhangi bir operatörü yürütmek için kullanılır.

Doğrusal bir operatörün sözdizimsel yapısının iki biçimi vardır: alternatifi yok, alternatifi yok.

Tartışmasız koşullu işlecin yapısı (kısaltma):

Eğer<условие> Sonra<оператор 1>

Alternatif koşullu işlecin yapısı (tam sürüm):

Eğer<условие> Sonra<оператор 1> Başka<оператор 2>

nerede

If, Then, Else - ayrılmış sözcükler (eğer, öyleyse, aksi halde);

<условие> - mantıksal tipte keyfi bir ifade;

<оператор 1>, <оператор 2> - herhangi bir dil operatörüVBA.

İş. Koşullu ifade önce değerlendirilir<условие>... Bir sonuç varsaDoğru (doğru) sonra çalıştırılır<оператор 1>, ve<оператор 2> atlandı. Bir sonuç varsaYanlış (yanlış), aksine,<оператор 1> atlandı ama idam edildi<оператор 2>.

2. Koşullu blok operatörü, koşul doğruysa kullanılır, birkaç program deyimini (deyimler bloğu) yürütmek gerekir. Blok operatörünün iki biçimi vardır: alternatif olmayan, alternatif.

Tartışmasız blok operatörünün yapısı (kısayol)

Eğer<условие> Sonra

<оператор1>

<оператор2>

…………….

<оператор n >

Bitiş Eğer

nerede

Bitiş Eğer - operatör bloğunun sonunu gösterirEğer.

Alternatif blok operatör yapısı:

Eğer<условие> Sonra

<оператор1>

<оператор2>

…………….

<оператор n >

Başka

<оператор1>

<оператор2>

…………….

<оператор n >

Bitiş Eğer

Örnek 1.

Sorunun formülasyonu. Standart bir modülde formun bir denklemini hesaplamak için özel bir prosedür oluşturunax 2 + bx + c \u003d 0.

1. İlk veriler:

a, b, c  R

Sonuç: x1, x2  R.

2. Standart proje modülüne aşağıdaki özel prosedürü yazın:

Özel Sub yravnenie ()

a \u003d InputBox ("a \u003d", a)

b \u003d Giriş Kutusu ("b \u003d", b)

c \u003d InputBox ("c \u003d", c)

d \u003d b ^ 2 - 4 * a * c

D\u003e \u003d 0 ise

x1 \u003d (-b + Sqr (d)) / (2 * a)

x2 \u003d (-b - Sqr (d)) / (2 * a)

Mesaj Kutusu (x1)

Mesaj Kutusu (x2)

Başka

MsgBox ("Çözüm yok")

Bitiş Eğer

Aboneliği Sonlandır

Alternatif blok operatörüEğer bir koşul karşılandığında, bir program işleci kümesinin ve karşılanmazsa başka bir kümenin uygulanmasının gerekli olduğu durumlarda kullanılır.

IF ifadeleri birbirinin içinde yuvalanabilir. Bu tür operatör yerleştirme, doğru olan başka bir koşul altında bazı koşulları kontrol etmeniz gerektiğinde kullanılır.

İç içe işleç biçimiEğer:

Eğer<условие1> Sonra

Eğer<условие2> Sonra

<оператор1>

<оператор2>

…………….

<оператор n >

Başka

<оператор1>

<оператор2>

…………….

< оператор n>

Bitiş Eğer

Bitiş Eğer

Örnek 2.

Sorunun formülasyonu. Verilen üç sayı arasında maksimum değeri bulmak için standart modülde özel bir işlev oluşturuny 1 \u003d a + 2 * b; y 2 \u003d a * b + c; y 3 \u003d c 2 + 1.

Görev yürütme teknolojisi:

1. İlk veriler:

a, b, c  R

Sonuç: Maks  R.

2. Standart proje modülüne aşağıdaki kullanıcı tanımlı işlevi yazın:

Fonksiyon y (a, b, c)

y1 \u003d a + 2 * b

y2 \u003d a * b + c

y3 \u003d c ^ 2 + 1

Y1\u003e y2 ise O zaman

Y1\u003e y3 ise y \u003d y1 Aksi takdirde y \u003d y3

Başka

Y2\u003e y3 ise y \u003d y2 Aksi takdirde y \u003d y3

Bitiş Eğer

Son İşlevi

3. Rasgele girdi verileri için ikinci dereceden bir denklemin köklerini hesaplayın.

İç içe işleçleri kullanırkenEğer koşulların kombinasyonlarını karıştırmamak önemlidir. Hatırlanması gereken kural şudur: alternatifBaşka en yakın operatöre ait olduğu kabul edilirEğer şubesi olmayanBaşka.

VBA'da Çok operatörlü kullanım için tasarlanmıştırEğer ... Bu operatörler, orijinal duruma ek olarak birkaç koşulun daha dikkate alınmasının gerekli olduğu durumlarda kullanılır. Bunun için yapı kullanılır:Eğer… O zaman… Aksi takdirde ... İç içe geçmiş operatörlerin aksine, çoklu operatör yapısıEğer başlangıç \u200b\u200bkoşulunun değeri alması durumunda ek bir koşulu kontrol etmenize olanak sağlarYanlış.

Kayıt formatı:

Eğer<условие1> Sonra

<оператор1>

ElseIf<условие2> Sonra

<оператор2>

Başka

<.оператор3>

EndIf

Örnek 3.

Sorunun formülasyonu. Satış müdürünün komisyonları hesaplamak için bir fonksiyon geliştirmesi gerekir. Komisyon yüzdesi, satılan malların hacmine bağlıdır ve Tablo 15'te sunulan aşağıdaki kurala göre hesaplanır.

Komisyon hesaplama kuralları

Haftalık satış hacmi, s.

Komisyon, %

0 ile 9999

10000 ile 19999 arası

20.000 - 39.999

40.000'den fazla

Görev yürütme teknolojisi:

1. İlk veriler:

Satış  Z.

Sonuç: Komisyon R.

2. Standart bir modülde komisyonları hesaplamak için özel bir işlev oluşturun:

Fonksiyon Komisyonu (Satış)

Satış ise<= 9999 Then

Komisyonlar \u003d Satış * 0.08

ElseIf Satış<= 19999 Then

Komisyonlar \u003d Satış * 0.1

ElseIf Satış<= 39999 Then

Komisyonlar \u003d Satış * 0.12

Başka

Komisyonlar \u003d Satış * 0.14

Bitiş Eğer

Son İşlevi

3. Hesaplayın.

3.5.1 Koşullu ve koşulsuz şube operatörleri. Şebeke Eğer ... Sonra başka

VBA'daki Koşulları Kontrol Etme, If ... Then ... Else İfadesi, Yapılıysa İç İçe

Koşullu atlama operatörleri programlama dillerinde en önemli ve sık kullanılan öğelerden bazılarıdır. Çalışmalarının genel ilkesi basittir: bazı koşullara uygunluk kontrol edilir (herhangi bir ifadenin doğruluğu veya yanlışlığı) ve buna bağlı olarak, programın yürütülmesi bir veya başka bir dal boyunca yönlendirilir. VBA iki koşullu dal ifadesi sağlar: If… Then ... Else ve Select Case.

Şebeke Eğer ... O zaman... Else, programcılar arasında en popüler olanıdır. Tam sözdizimi şuna benzer:

Durum Varsa O Zaman
Takımlar1

Neredeyse:

  • Durum - hakikat için test edilmiş bir ifade. Doğruysa, yanlışsa Komutlar1 çalıştırılır - Komutlar2;
  • KoşullarN - kontrol edilebilecek ek koşullar. Çalıştırılırlarsa (KoşulN ifadesi doğrudur), KomutlarN çalıştırılır.

If ... Then ... Else ifadesi uygulanır:

  • bir koşula uyup uymadığını kontrol etmeniz gerektiğinde ve uygunluk durumunda bazı önlemler alın:

Eğer nSıcaklık< 10 Then

MsgBox "Ceket giy"

  • önceki örnektekinin aynısını yapmanız gerektiğinde ve tutarsızlık durumunda başka bir işlem yapın:

Eğer nSıcaklık< 10 Then

MsgBox "Ceket giy"

MsgBox "Rüzgar kırıcı takın"

  • çeşitli koşullara uygunluğu kontrol etmeniz gerektiğinde (boole operatörlerinin kullanımına dikkat edin):

Eğer (nSıcaklık< 10) And (bRain = True) Then

MsgBox "Bir ceket giy ve şemsiye al"

  • ilk kontrol False olarak döndüyse, birkaç koşula daha uygun olup olmadığını kontrol etmeniz gerekir (bu durumda ElseIf kullanmak daha uygundur):

Eğer (bIGoInCar \u003d True) O zaman

MsgBox "Araba için elbise"

Aksi takdirde nSıcaklık< 10 Then

MsgBox "Ceket giy"

MsgBox "Gömlek giyebilirsin"

Bu örnekte, bIGoInCar bir Boolean değişkeni olduğundan ve kendisi True veya False olarak değerlendirildiğinden, ilk satır şu şekilde görünebilir:

Eğer bIGoInCar ise ...

If ... Then ... Else kullanımıyla ilgili bazı notlar:

  • then anahtar sözcüğü If ve koşul ile aynı satırda olmalıdır. Bir sonraki satıra taşırsanız, bir hata mesajı görüntülenir;
  • eğer kontrol edilen koşul doğruysa yürütülmesi gereken komutu If ve Then ile aynı satıra yerleştirirseniz, End If atlanabilir:

Eğer nSıcaklık< 10 Then MsgBox "Одеть куртку"

  • birkaç komut veya Else / ElseIf yapısı kullanırsanız, sonunda End If yazılmalıdır, aksi takdirde bir sözdizimi hatası oluşur.
  • if… Then ifadesi için, komut bloklarını vurgulamak için girintiyi kullanmanız kesinlikle önerilir. Aksi takdirde kodu okumak zor olacaktır.
  • if ... Then ifadeleri iç içe olabilir:

MyVar \u003d 5 ise O zaman

MsgBox "MyVar \u003d 5"

MyVar \u003d 10 ise O zaman

MsgBox "MyVar \u003d 10"

Kontrol yapıları, program yürütme sırasını kontrol etmenize izin verir. Kontrol ifadeleri olmadan, tüm program ifadeleri soldan sağa ve yukarıdan aşağıya çalışır. Bununla birlikte, bazen belirli bir dizi talimatı otomatik olarak tekrar tekrar yürütmek veya çalışma zamanında kullanıcı tarafından belirtilen değişkenlerin veya parametrelerin değerine bağlı olarak sorunu farklı şekilde çözmek gerekir. Bunun için kontrol yapıları ve döngüleri kullanılır.

VBA, aşağıdaki karar yapılarını destekler:

Eğer. ... ... Sonra. ... ... Başka

6.1 If yapısı. ... ... Sonra

Eğer. ... ... Ardından, bir koşula bağlı olarak bir veya bir grup ifadenin yürütülmesi gerektiğinde kullanılır. Bu yapının sözdizimi, onu bir satırda veya programın birkaç satırında belirtmenize izin verir:

If condition Then ifade If condition Then ifadesi End If

Koşul genellikle basit bir karşılaştırmadır, ancak hesaplanmış değeri olan herhangi bir ifade olabilir. Bu değer sıfırsa False olarak yorumlanır ve sıfır olmayan herhangi bir değer True olarak kabul edilir. Koşul doğruysa, Then anahtar sözcüğünden sonraki tüm ifadeler çalıştırılır. Bir ifadeyi koşullu olarak yürütmek için, hem tek satırlı sözdizimini hem de çoklu satır sözdizimini (blok oluşturma) kullanabilirsiniz.

Aşağıdaki iki operatör eşdeğerdir:

Varsa< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If

If ifadesinin sözdiziminin olduğuna dikkat edin. ... ... Sonra End If deyimini tek bir satır için kullanmaz. Bir koşul doğruysa bir dizi deyimi yürütmek için If blok yan tümcesini kullanın. ... ... Sonra. ... ... If End If.

Varsa< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If

Koşul yanlışsa, Then anahtar sözcüğünden sonraki ifadeler yürütülmez ve kontrol sonraki satıra (veya bir blok yapımında End If ifadesinden sonraki satıra) geçirilir.

6.2 Yapılıyorsa. ... ... Sonra. ... ... Başka

biri koşula bağlı olarak yürütülecek birkaç ifade bloğu tanımlar:

If koşul1 Sonra ifade1 ElseIf koşul2 Sonra ifade2. ... ... Else ifade -n End If

Yürütüldüğünde, ilk olarak koşul1 kontrol edilir. Yanlışsa, VBA gerçek bir koşul bulana kadar sonraki koşulu2 ve bu şekilde devam eder. VBA bunu bulduğunda, uygun ifade bloğunu yürütür ve ardından denetimi End if ifadesini izleyen ifadeye aktarır. Bu yapıda, koşullardan hiçbiri karşılanmazsa VBA'nın yürüttüğü bir Else deyim bloğu ekleyebilirsiniz.

Eğer. ... ... Sonra. ... ... ElseIf gerçekten If yapısının özel bir durumudur. ... ... Sonra. ... ... Başka. Bu yapının herhangi bir sayıda ElseIf bloğu içerebileceğini veya hiçbirini içermeyeceğini unutmayın. Else bloğu, varlığından veya tersine ElseIf bloklarının yokluğundan bağımsız olarak dahil edilebilir.

Alt örnek 1 () Dim a As Single, b As Single, x As Single Dim z As Double Call okundu ("A1", a) Çağrı okuma ("B1", b) Let x \u003d CSng (InputBox ("x girin") , "Veri girişi", 0)) Eğer x<= a Then z = Sin(x) ElseIf x >\u003d b Sonra z \u003d Tan (x) Else: z \u003d Cos (x) Çağrılırsa Bitir ("C1", z) Alt

If ifadenize istediğiniz sayıda Elself bloğu ekleyebileceğinizi unutmayın. ... ... Sonra. Ancak, Elself bloklarının sayısı o kadar büyük olabilir ki If. ... ... O zaman çok hantal ve uygunsuz hale gelecektir. Böyle bir durumda, başka bir karar verme yapısı kullanılmalıdır - Vaka Seçin.

6.3 Kasa Yapısını Seçin

Select Case yapısı, If yapısına bir alternatiftir. ... ... Sonra. ... ... Büyük bir ifade kümesinden oluşan bir bloğu yürütürken başka. Select Case yapısı, If yapısına benzer bir yetenek sağlar. ... ... Sonra. ... ... Aksi halde, birden fazla seçeneğiniz olduğunda kodunuzu daha okunaklı hale getirir.

Select Case yapısı, yapıya girildikten sonra değerlendirilen tek bir test edilebilir ifade üzerinde çalışır. Daha sonra VBA, sonucu yapının Case ifadelerinde belirtilen değerlerle karşılaştırır. Bir eşleşme bulunursa, Case ifadesiyle ilişkili ifade bloğu yürütülür:

Case test_expression]] öğesini seçin. ... ... ] Seçimi Sonlandır

Her ifade listesi, bir veya daha fazla değerden oluşan bir listedir. Bir listede birden fazla değer varsa, bunlar virgülle ayrılır. Her bir ifade bloğu birkaç ifade içerir veya hiç içerir. Test edilen ifadenin hesaplanan değerinin birkaç Case ifadesinden gelen değerlere karşılık geldiği ortaya çıkarsa, bulunan tüm eşleşmelerden ilk Case ifadesiyle ilişkili ifadeler bloğu yürütülür. VBA, Case Else deyimiyle ilişkili bir ifade bloğu yürütür (bunun isteğe bağlı olduğunu unutmayın), tüm Case deyimi listelerinden değerlerle eşleşen bir ifade değeri bulunmazsa.

Fonksiyonu hesaplamanın bir örneğini ele alalım

Alt örnek2 () Sabit pi2 \u003d 1,57 Dim x As Single Dim z As Double Let x \u003d CSng (InputBox ("x girin", "Veri girişi", 0)) Case x Case -pi2 z \u003d Sin (x) Durum 0 z \u003d Cos (x) Durum pi2 z \u003d Tan (x) Durum Başka Mesaj Kutusu "Geçersiz giriş verileri!" Çık Sub End Seç Çağrı ("D1", z) End Sub

Select Case yapısının ifadeyi girerken yalnızca bir kez ve If. ... ... Sonra. ... ... Aksi takdirde, her Elself ifadesi için farklı bir ifade değerlendirilir. Eğer. ... ... Sonra. ... ... Else, yalnızca If ifadesi ve her Elself ifadesi aynı ifadeyi değerlendirirse Select Case ile değiştirilebilir.