Jak používat If-Then v Excelu 2016 VBA

If-Then je nejdůležitější řídicí struktura VBA. Tento příkaz budete pravděpodobně používat denně. Pokud chcete provést jeden nebo více příkazů podmíněně, použijte strukturu If-Then. Volitelná klauzule Else, pokud je zahrnuta, vám umožní provést jeden nebo více příkazů, pokud testovaná podmínka není pravdivá. Zde je jednoduchý postup CheckUser, překódovaný tak, aby používal strukturu If-Then-Else:

Sub CheckUser2()
  Uživatelské jméno = InputBox(“Zadejte své jméno:”)
  If UserName = “Satya Nadella” Pak
    MsgBox ("Vítejte Satyo...")
' …[Více kódu zde] …
  Jiný
    MsgBox „Omlouvám se. Tohle může zvládnout jen Satya Nadella."
  End If
End Sub

Příklady If-Then

Následující rutina ukazuje strukturu If-Then bez volitelné klauzule Else:

Sub GreetMe()
  Pokud čas < 0,5, pak MsgBox „Dobré ráno“
End Sub

Procedura GreetMe využívá funkci času VBA k získání systémového času. Pokud je aktuální čas menší než 0,5, rutina zobrazí přátelský pozdrav. Pokud je Čas větší nebo roven 0,5, rutina skončí a nic se nestane.

Chcete-li zobrazit jiný pozdrav, pokud je Čas větší nebo roven 0,5, můžete za první přidat další příkaz If-Then:

Sub GreetMe2()
  Pokud čas < 0,5, pak MsgBox „Dobré ráno“
  Pokud čas >= 0,5, pak MsgBox „Dobré odpoledne“
End Sub

Všimněte si, že >= (větší nebo rovno) se používá pro druhý příkaz If-Then. Tím je zajištěno pokrytí celého dne. Pokud by bylo použito > (větší než), neobjevila by se žádná zpráva, pokud by byl tento postup proveden přesně ve 12:00. To je dost nepravděpodobné, ale s důležitým programem, jako je tento, nechcete riskovat.

Příklad If-Then-Else

Jiný přístup k předchozímu problému používá klauzuli Else. Zde je stejná rutina překódovaná pro použití struktury If-Then-Else:

Sub GreetMe3()
  If Time < 0,5 Then MsgBox „Dobré ráno“ Jinak _
    MsgBox „Dobré odpoledne“
End Sub

Všimněte si, že v předchozím příkladu je použit znak pro pokračování řádku (podtržítko). Příkaz If-Then-Else je ve skutečnosti jeden příkaz. VBA poskytuje mírně odlišný způsob kódování konstrukcí If-Then-Else, které používají příkaz End If. Proto lze proceduru GreetMe přepsat jako

Sub GreetMe4()
  If Time < 0,5 Then
    MsgBox „Dobré ráno“
  Jiný
    MsgBox „Dobré odpoledne“
  End If
End Sub

Ve skutečnosti můžete do části If vložit libovolný počet příkazů a do části Else libovolný počet příkazů. Tato syntaxe se lépe čte a zkracuje příkazy.

Co když potřebujete rozšířit rutinu GreetMe tak, aby zvládla tři podmínky: ráno, odpoledne a večer? Máte dvě možnosti: Použijte tři příkazy If-Then nebo použijte vnořenou strukturu If-Then-Else. Vnoření znamená umístění struktury If-Then-Else do jiné struktury If-Then-Else. První přístup, využívající tři příkazy If-Then, je jednodušší:

Sub GreetMe5()
 Dim Msg As String
 Pokud je čas < 0,5, pak zpráva = „Ráno“
 Pokud Čas >= 0,5 a Čas < 0,75, pak Msg = „Odpoledne“
 Pokud Čas >= 0,75, pak Msg = „Večer“
 MsgBox „Dobré“ & Msg
End Sub

Byl přidán nový twist s použitím proměnné. Proměnná Msg získá jinou textovou hodnotu v závislosti na denní době. Výpis MsgBox zobrazuje pozdrav: Dobré ráno, Dobré odpoledne nebo Dobrý večer.

Následující rutina provádí stejnou akci, ale používá strukturu If-Then-End If:

Sub GreetMe6()
  Dim Msg As String
  If Time < 0,5 Then
    Msg = "Ráno"
  End If
  Pokud čas >= 0,5 a čas < 0,75, pak
    Msg = "Odpoledne"
  End If
  Pokud Čas >= 0,75 Pak
    Msg = "Večer"
  End If
  MsgBox „Dobré“ & Msg
End Sub

Pomocí ElseIf

V předchozích příkladech se provede každý příkaz v rutině. O něco efektivnější struktura by opustila rutinu, jakmile se zjistí, že podmínka je pravdivá. Například ráno by měla procedura zobrazit zprávu Dobré ráno a poté ji ukončit – bez vyhodnocení dalších nadbytečných podmínek.

S takovou drobnou rutinou se nemusíte starat o rychlost provádění. Ale pro větší aplikace, ve kterých je rychlost kritická, byste měli vědět o jiné syntaxi pro strukturu If-Then.

Zde je návod, jak můžete přepsat rutinu GreetMe pomocí této syntaxe:

Sub GreetMe7()
 Dim Msg As String
 If Time < 0,5 Then
   Msg = "Ráno"
 ElseIf Čas >= 0,5 a čas < 0,75 Potom
   Msg = "Odpoledne"
 Jiný
   Msg = "Večer"
 End If
 MsgBox „Dobré“ & Msg
End Sub

Když je podmínka pravdivá, VBA provede podmíněné příkazy a struktura If skončí. Jinými slovy, tento postup je o něco efektivnější než předchozí příklady. Kompromisem je, že kód je obtížnější pochopit.

Další příklad If-Then

Zde je další příklad, který používá jednoduchou formu struktury If-Then. Tento postup vyzve uživatele k zadání množství a poté zobrazí příslušnou slevu na základě množství, které uživatel zadá:

Sub ShowDiscount()
  Tlumené množství jako dlouhé
  Dvojitá sleva
  Množství = InputBox(“Zadejte množství:”)
  Pokud je množství > 0, pak sleva = 0,1
  Pokud množství >= 25, pak sleva = 0,15
  Pokud množství >= 50, pak sleva = 0,2
  Pokud množství >= 75, pak sleva = 0,25
  MsgBox „Sleva: “ & Sleva
End Sub

Všimněte si, že každý příkaz If-Then v této rutině se provádí a hodnota pro Sleva se může měnit, jak jsou příkazy prováděny. Rutina však nakonec zobrazí správnou hodnotu pro slevu, protože příkazy If-Then jsou seřazeny podle vzestupných hodnot slev.

Následující postup provádí stejné úkoly pomocí alternativní syntaxe ElseIf. V tomto případě rutina skončí okamžitě po provedení příkazů pro pravdivou podmínku:

Sub ShowDiscount2()
 Tlumené množství jako dlouhé
 Dvojitá sleva
 Množství = InputBox(“Zadejte množství:”)
 Pokud Množství > 0 A Množství < 25 Pak
  Sleva = 0,1
 ElseIf Množství >= 25 a množství < 50 Pak
  Sleva = 0,15
 ElseIf Množství >= 50 a množství < 75 Potom
  Sleva = 0,2
 ElseIf Množství >= 75 Pak
  Sleva = 0,25
 End If
 MsgBox „Sleva: “ & Sleva
End Sub

Tyto vícenásobné struktury If-Then jsou poměrně těžkopádné. Možná budete chtít použít strukturu If-Then pouze pro jednoduchá binární rozhodnutí.


Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows Aplikace Microsoft Word otevírá soubory v režimu pouze pro čtení, takže je nelze upravovat? Nebojte se, metody jsou uvedeny níže

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit chyby při tisku nesprávných dokumentů Microsoft Word Chyby při tisku dokumentů Word se změněným písmem, chaotickými odstavci, chybějícím textem nebo ztraceným obsahem jsou poměrně časté. Nicméně ne

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Pokud jste použili pero nebo zvýrazňovač ke kreslení na snímky aplikace PowerPoint během prezentace, můžete kresby uložit pro další prezentaci nebo je vymazat, takže až ji příště ukážete, začnete s čistými snímky aplikace PowerPoint. Chcete-li vymazat kresby perem a zvýrazňovačem, postupujte podle těchto pokynů: Mazání čar jedna na […]

Obsah knihovny stylů v SharePointu 2010

Obsah knihovny stylů v SharePointu 2010

Knihovna stylů obsahuje soubory CSS, soubory XSL (Extensible Stylesheet Language) a obrázky používané předdefinovanými vzorovými stránkami, rozvržení stránek a ovládací prvky v SharePointu 2010. Chcete-li najít soubory CSS v knihovně stylů webu pro publikování: Vyberte Akce webu→ Zobrazit Veškerý obsah webu. Zobrazí se obsah webu. Knihovna stylů se nachází v […]

Formátování čísel v tisících a milionech v sestavách Excel

Formátování čísel v tisících a milionech v sestavách Excel

Nezahlcujte své publikum gargantuovskými čísly. V aplikaci Microsoft Excel můžete zlepšit čitelnost řídicích panelů a sestav formátováním čísel tak, aby se zobrazovaly v tisících nebo milionech.

Jak sdílet a sledovat weby SharePoint

Jak sdílet a sledovat weby SharePoint

Naučte se používat nástroje sociálních sítí SharePoints, které umožňují jednotlivcům a skupinám komunikovat, spolupracovat, sdílet a propojovat se.

Jak převést data do juliánských formátů v aplikaci Excel

Jak převést data do juliánských formátů v aplikaci Excel

Juliánská data se často používají ve výrobním prostředí jako časové razítko a rychlý odkaz pro číslo šarže. Tento typ kódování data umožňuje maloobchodníkům, spotřebitelům a servisním zástupcům identifikovat, kdy byl produkt vyroben, a tím i stáří produktu. Juliánská data se také používají v programování, armádě a astronomii. Odlišný […]

Jak vytvořit webovou aplikaci Access

Jak vytvořit webovou aplikaci Access

Webovou aplikaci můžete vytvořit v Accessu 2016. Co je tedy vlastně webová aplikace? Web znamená, že je online, a aplikace je jen zkratka pro „aplikaci“. Vlastní webová aplikace je online databázová aplikace přístupná z cloudu pomocí prohlížeče. Webovou aplikaci vytváříte a udržujete ve verzi pro počítače […]

Panel rychlého spuštění v SharePointu 2010

Panel rychlého spuštění v SharePointu 2010

Většina stránek v SharePointu 2010 zobrazuje seznam navigačních odkazů na panelu Snadné spuštění na levé straně stránky. Panel Snadné spuštění zobrazuje odkazy na doporučený obsah webu, jako jsou seznamy, knihovny, weby a stránky publikování. Panel Snadné spuštění obsahuje dva velmi důležité odkazy: Odkaz na veškerý obsah webu: […]

Co znamenají chybové zprávy Řešitel v Excelu?

Co znamenají chybové zprávy Řešitel v Excelu?

U jednoduchých problémů Řešitel v Excelu obvykle rychle najde optimální hodnoty proměnné Řešitel pro účelovou funkci. Ale v některých případech má Řešitel problém najít hodnoty proměnné Řešitel, které optimalizují účelovou funkci. V těchto případech Řešitel obvykle zobrazí zprávu nebo chybovou zprávu, která popisuje nebo popisuje problém, který […]