Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Můžete určit, že parametr procedury je nepovinný a při volání procedury pro něj není nutné zadat žádný argument.
Volitelné parametry jsou označené klíčovým slovem Optional v definici procedury. Platí následující pravidla:
Každý volitelný parametr v definici procedury musí zadat výchozí hodnotu.
Výchozí hodnota volitelného parametru musí být konstantní výraz.
Každý parametr, který následuje za volitelným parametrem v definici procedury, musí být také volitelný.
Následující syntaxe ukazuje deklaraci procedury s volitelným parametrem:
Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Volání procedur s volitelnými parametry
Při volání procedury s volitelným parametrem můžete zvolit, zda má být argument zadaný. Pokud ne, použije procedura výchozí hodnotu deklarovanou pro tento parametr.
Když v seznamu argumentů vynecháte jeden nebo více nepovinných argumentů, označíte jejich pozice pomocí po sobě jdoucích čárek. Následující příklad volání poskytuje první a čtvrtý argument, ale nikoli druhý nebo třetí:
Sub name(argument 1, , , argument 4)
Následující příklad volá několikrát funkci MsgBox.
MsgBox má jeden povinný parametr a dva volitelné parametry.
První volání MsgBox poskytuje všechny tři argumenty v pořadí, jak je definuje MsgBox. Druhé volání poskytuje pouze požadovaný argument. Třetí a čtvrtá volání poskytují první a třetí argumenty. Třetí volání to dělá podle pozice a čtvrté volání to dělá podle názvu.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Určení, zda je k dispozici volitelný argument
Procedura nemůže rozpoznat za běhu, zda byl daný argument vynechán nebo volající kód explicitně zadal výchozí hodnotu. Pokud potřebujete toto rozlišení odlišit, můžete jako výchozí nastavit nepravděpodobnou hodnotu. Následující postup definuje volitelný parametr officea testuje jeho výchozí hodnotu, aby se zjistilo, QJZjestli nebyl ve volání vynechán:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Pokud je volitelný parametr referenčním typem, jako Stringje například , můžete použít Nothing jako výchozí hodnotu, za předpokladu, že se nejedná o očekávanou hodnotu argumentu.
Volitelné parametry a přetížení
Dalším způsobem, jak definovat proceduru s volitelnými parametry, je použití přetížení. Pokud máte jeden volitelný parametr, můžete definovat dvě přetížené verze procedury, jednu, která přijímá parametr a jeden bez něj. Tento přístup je složitější, protože se zvyšuje počet volitelných parametrů. Jeho výhodou je ale to, že si můžete být naprosto jistí, jestli volající program zadal každý volitelný argument.