Byval je klíčové slovo VBA Excel používané k přenosu argumentů do podprogramů. V tomto článku se podrobně podíváme na to, jak používat Byval a jak ovlivňuje provádění kódu.
Byval znamená, že při přenosu argumentu do podprogramu je hodnota proměnné zkopírována, místo aby se na ni odkazoval. To znamená, že jakékoli změny hodnoty uvnitř podprogramu neovlivní hodnotu proměnné v hlavním programu.
Příklad použití Byval:
Sub ChangeValueByVal(ByVal x As Integer)
x = x + 1
End Sub
Sub Main()
Dim num As Integer
num = 10
ChangeValueByVal num
MsgBox num
End Sub
Všimněte si, že po vyvolání podprogramu ChangeValueByVal se hodnota proměnné num nezměnila. Je to proto, že jsme při vyhlašování podprogramu použili Klíčové slovo Byval. Pokud bychom nepoužili Klíčové slovo Byval, pak by se při změně hodnoty argumentu x uvnitř podprogramu změnila i hodnota proměnné num.
Použití Byval v aplikaci VBA Excel tedy umožňuje přenášet argumenty do podprogramů způsobem, který neovlivňuje hodnoty proměnných v hlavním kódu. To je extrémně užitečné v případech, kdy potřebujeme použít hodnotu proměnné, ale nechceme, aby se měnila v procesu provádění kódu. Pamatujte, že Byval se používá ve výchozím nastavení, takže jeho výslovný pokyn není vyžadován, pokud nechcete předávat argumenty prostřednictvím odkazu.
Použití Byval v aplikaci VBA Excel
Když je proceduře předán argument o hodnotě, zkopíruje se hodnota argumentu do časové proměnné. To znamená, že jakékoli změny provedené v kopii argumentu neovlivní původní hodnotu argumentu.
Byval může být užitečný v následujících situacích:
- Kdy je třeba zachovat původní hodnotu argumentu a zabránit jeho změně v rámci postupu.
- Když práce s významem argumentu neovlivní kód, který jej způsobuje.
- Když přenášená hodnota zabírá málo místa v paměti a její kopírování nezpůsobuje problémy s výkonem.
Příklad použití Byval v aplikaci VBA Excel:
Sub ChangeValue(ByVal num As Integer)num = 10 ' Изменение значения аргументаEnd SubSub Main()Dim value As Integervalue = 5ChangeValue value ' Вызов процедуры с аргументомMsgBox value ' Отображение оригинального значения аргументаEnd Sub
V tomto příkladu, postup ChangeValue získává argument o významu pomocí klíčového slova ByVal. V rámci postupu se hodnota argumentu mění o 10, ale původní proměnná value se nemění a zůstává rovna 5. Při zobrazení hodnoty proměnné value pomocí MsgBox se zobrazí původní hodnota 5, nikoli změněná hodnota 10.
Použití Byval v aplikaci VBA Excel může být užitečným nástrojem pro správu přenosu a změnu hodnot argumentů v postupech. To umožňuje flexibilnější správu dat a zabraňuje nežádoucím změnám jejich hodnot.
Definice parametru Byval
Když je parametr oznámen s klíčovým slovem ByVal, hodnota převedená do postupu nebo funkce je zkopírována do vnitřní proměnné, která je místní pro daný postup nebo funkci. To znamená, že jakékoli změny provedené v rámci postupu nebo funkce na kopii proměnné nemají vliv na hodnotu původní proměnné, která byla předána.
Sub ByvalExample(ByVal number As Integer)number = number + 1MsgBox "Значение переменной number: " & numberEnd SubSub Main()Dim a As Integera = 5MsgBox "Исходное значение переменной a: " & aByvalExample aMsgBox "Значение переменной a после вызова функции: " & aEnd Sub
V tomto příkladu je vytvořen postup ByvalExample, která přijímá parametr number podle významu. V rámci postupu význam number zvyšuje se o 1. Poté se zobrazí zpráva s aktualizovanou hodnotou number.
V postupu Main vzniká proměnná a s hodnotou 5. Poté se zobrazí zpráva s původní hodnotou proměnné a. Následuje procedura ByvalExample s převodem proměnné a jako argument. Po vyvolání se zobrazí zpráva s aktuální hodnotou proměnné a. Důležité je, že v tomto případě je hodnota proměnné a to se nezměnilo, protože parametr byl převeden na hodnotu.
Klíčové slovo ByVal často se používá, když je třeba uspořádat pouze jednostranný přenos hodnoty proměnné do procedury nebo funkce, aniž by bylo možné ji změnit na místě. Tím se také vyhnete neočekávaným vedlejším účinkům spojeným se změnou proměnných přenášených jako argumenty.