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í.

Leave a Comment

Jak používat příkazy Znovu a Opakovat ve Wordu 2016

Jak používat příkazy Znovu a Opakovat ve Wordu 2016

Objevte, jak efektivně využívat příkazy Znovu a Opakovat ve Wordu 2016 pro opravy dokumentů a zlepšení pracovního toku.

Jak změnit zamčené a skryté formátování buněk

Jak změnit zamčené a skryté formátování buněk

Naučte se, jak efektivně změnit stav buněk v Excelu 2010 z uzamčených na odemčené nebo z neskrytého na skrytý s naším podrobným průvodcem.

Jak přeložit text v cizím jazyce ve Wordu 2016

Jak přeložit text v cizím jazyce ve Wordu 2016

Zjistěte, jak efektivně využít překladové nástroje v Office 2016 pro překlad slov a frází. Překlad Gizmo vám pomůže překládat text s lehkostí.

Jak používat šablony ve Wordu 2013

Jak používat šablony ve Wordu 2013

Šablona ve Wordu šetří čas a usnadňuje vytváření dokumentů. Zjistěte, jak efektivně používat šablony ve Wordu 2013.

Jak vytvořit e-mailová upozornění pro skupinu SharePointu

Jak vytvořit e-mailová upozornění pro skupinu SharePointu

Zjistěte, jak si vytvořit e-mailová upozornění ve SharePointu a zůstat informováni o změnách v dokumentech a položkách.

Obsah SharePoint Online a typy obsahu

Obsah SharePoint Online a typy obsahu

Objevte skvělé funkce SharePoint Online, včetně tvorby a sdílení dokumentů a typů obsahu pro efektivnější správu dat.

Výpočet fiskálního čtvrtletí pro datum v Excelu

Výpočet fiskálního čtvrtletí pro datum v Excelu

Zjistěte, jak vypočítat fiskální čtvrtletí v Excelu pro různá data s použitím funkce CHOOSE.

Jak vytvořit hypertextový odkaz na jiný snímek v aplikaci PowerPoint 2007

Jak vytvořit hypertextový odkaz na jiný snímek v aplikaci PowerPoint 2007

Zjistěte, jak vytvořit hypertextový odkaz v PowerPointu, který vám umožní pohodlně navigovat mezi snímky. Použijte náš návod na efektivní prezentace.

Zobrazit starší verzi dokumentu aplikace Word 2016

Zobrazit starší verzi dokumentu aplikace Word 2016

Uložili jste nedávno svůj dokument? Náš návod vám ukáže, jak zobrazit starší verze dokumentu v aplikaci Word 2016.

Jak přiřadit makra pásu karet a panelu nástrojů Rychlý přístup v Excelu 2013

Jak přiřadit makra pásu karet a panelu nástrojů Rychlý přístup v Excelu 2013

Jak přiřadit makra vlastní kartě na pásu karet nebo tlačítku na panelu nástrojů Rychlý přístup. Návod pro Excel 2013.