Co to jest ByRef w VBA?

Byref w VBA oznacza „By Reference”. Za pomocą VBA Byref możemy celować w pierwotną wartość bez zmiany wartości przechowywanej w zmiennych. Innymi słowy, będziemy przekazywać wartość bezpośrednio do procedur Sub zamiast przechodzić przez zwykłe metody definiowania i przypisywania wartości do zmiennych.

W VBA ByRef definiujemy podprocedurę po ustawieniu reguły dla ByRef. Można to zrobić poniżej podprocedury, w której chcemy napisać kod. W ByRef redefiniujemy zmienną, która jest używana w procedurze Sub. Działa to poprawnie tylko wtedy, gdy wywołujemy warunek ByRef w naszej podprocedurze.

Jak korzystać z funkcji ByRef w programie Excel VBA?

Poniżej znajdują się różne przykłady użycia funkcji ByRef w programie Excel przy użyciu kodu VBA.

Możesz pobrać ten szablon Excel VBA ByRef tutaj - Szablon Excel VBA ByRef

Excel VBA ByRef - Przykład nr 1

Najpierw nauczmy się, jak wstawić ByRef w VBA, w tym celu wykonaj poniższe kroki. W tym przykładzie zobaczymy, jak używać VBA ByRef do prostej matematycznej pracy odejmującej. Do tego potrzebowalibyśmy modułu.

Krok 1: Więc przejdź do VBA i otwórz moduł z opcji menu Wstaw, jak pokazano poniżej.

Krok 2: W nowo otwartym module napisz podkategorię VBA ByRef, jak pokazano poniżej.

Kod:

 Sub VBA_ByRef1 () End Sub 

Krok 3: Teraz zdefiniuj zmienną, powiedzmy, że jest to A jako liczba całkowita.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Krok 4: Daj dowolną liczbę zmiennej A. Niech ta liczba będzie wynosić 1000.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 End Sub 

Krok 5: Aby wydrukować wartość przechowywaną w zmiennej A, użyjemy Msgbox.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub 

Krok 6: Teraz kompilujemy i uruchamiamy ten kod, klikając przycisk Odtwórz, jak pokazano poniżej. Otrzymamy okno komunikatu z wartością zapisaną w zmiennej A jako 1000 .

Teraz zastosuj VBA ByRef, utwórz kolejną podkategorię poniżej pierwszej i przypisz zdefiniowaną zmienną z pierwszej podkategorii za pomocą ByRef.

Krok 7: W ten sposób pozwolimy drugiej podkategorii na użycie wartości przechowywanych w zmiennej A.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) End Sub 

Krok 8: Teraz ponownie wywołaj tutaj zmienną A i odejmij dowolną wartość od zmiennej A, aby uzyskać wartość wyjściową w tej samej zmiennej. Odejmijmy 100 od wartości zmiennej A, aby otrzymać liczbę mierzalną.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Krok 9: Teraz, jeśli skompilujemy każdy krok kodu, zauważymy, że gdy kursor osiągnie zmienną A, zobaczymy, że ma w nim tylko 0.

Krok 10: Gdy kursor osiągnie End Sub, wynik otrzymamy jako 1000 w oknie komunikatu.

Krok 11: Jest tak, ponieważ nie przypisaliśmy ByRef do pierwszej podkategorii. Teraz przypiszemy nazwę podkategorii przed funkcją okna komunikatu pierwszej podkategorii i zobaczymy, co się stanie.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Krok 12: A teraz ponownie uruchom cały kod. Zobaczymy, że druga wartość, która jest przechowywana w zmiennej A jako 100, została odjęta od pierwszej wartości 1000. W rezultacie otrzymaliśmy komunikat wyjściowy jako 900.

Krok 13: Jest to główna zaleta korzystania z ByRef. Nie musimy definiować wielu zmiennych dla jednego zadania. Wystarczy jedna zmienna, aby wykonać całe zadanie na różne sposoby. Możemy użyć więcej niż jednego ByRef w jednym module.

Aby uzasadnić to, co zrozumieliśmy, dodajmy kolejny ByRef w tym samym module.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) End Sub 

Krok 14: W tej podkategorii użyjmy mnożenia.

Kod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) A = A * 2 End Sub 

Krok 15: Ponownie skompiluj i uruchom kod ponownie. Przekonamy się, że wartość uzyskana z powyższych kroków jako 900 jest teraz mnożona przez 2, aby otrzymać 1800 jako wynik.

Excel VBA ByRef - Przykład 2

W tym przykładzie zobaczymy, jak ByRef działa z innymi liczbami całkowitymi.

Krok 1: Otwórz moduł i zapisz podkategorię, jak pokazano poniżej.

Kod:

 Sub VBA_ByRef4 () End Sub 

Krok 2: Teraz zdefiniuj zmienną A jako Double. Umożliwi nam to użycie wartości dziesiętnych.

Kod:

 Sub VBA_ByRef4 () Dim A As Double End Sub 

Krok 3: Przypisz dowolną wartość dziesiętną do zmiennej A.

Kod:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Krok 4: Teraz ponownie użyj okna komunikatu, aby zobaczyć wartość przechowywaną w zmiennej A.

Kod:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub 

Teraz, jeśli uruchomimy kod, otrzymamy 1.23 jako wynik.

Krok 5: W inny sposób użyjemy funkcji do zdefiniowania ByRef jako Double ze zmienną A.

Kod:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Funkcja AddTwo (ByRef A As Double) Jako funkcja Double End 

Krok 6: Teraz dodaj dowolną liczbę do zmiennej A. Powiedzmy, że jest to 10.

Kod:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Krok 7: I ponownie użyj tej zdefiniowanej funkcji ByRef w pierwszej podkategorii. Tutaj zobaczymy dwa okna komunikatu, jedno dla zmiennej A i drugie dla ByRef.

Kod:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Krok 8: To samo zostanie odzwierciedlone również w oknie komunikatu.

Krok 9: A w następnym uruchomieniu da wartość dodaną 10 do oryginalnej wartości zmiennej 1, 23, jak pokazano poniżej.

W ten sposób VBA Byref przyjmuje odniesienie do wartości zdefiniowanej jeden raz, a następnie zapełnia dane wyjściowe zgodnie z nowym warunkiem.

Plusy i minusy VBA ByRef

  • Pisząc duże kody, oszczędza dużo czasu, biorąc pod uwagę już zdefiniowaną zmienną, dzięki czemu jej wartość może być używana wielokrotnie.
  • Nie musimy definiować wielu zmiennych zgodnie ze wzorem, który chcemy zastosować.
  • Możemy zastosować wiele warunków ByRef w jednym module, nawet nie zakłócając procesu.
  • Nie możemy używać VBA Byref w złożonej strukturze kodu.

Rzeczy do zapamiętania

  • Rozważając więcej niż jeden warunek ByRef, wynik będzie oparty na ostatniej zdefiniowanej przez nas procedurze podrzędnej ByRef, ale uwzględnia również wszystkie warunki ByRef używane wcześniej.
  • Końcowe wyjście będzie miało sekwencyjnie przetworzone wyjście. Nie tylko najnowszy.
  • Tego procesu nie można wykonać, rejestrując makro.
  • Możemy zobaczyć wartość przechowywaną na każdym etapie zmiennej, kompilując kod.
  • Po zakończeniu zapisz plik Excel w formacie Excel Enabled, abyśmy nie stracili kodu w przyszłości.

Polecane artykuły

To jest przewodnik po VBA ByRef. Tutaj omawiamy, jak korzystać z funkcji ByRef w programie Excel za pomocą kodu VBA wraz z praktycznymi przykładami i szablonem Excel do pobrania. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -

  1. Przewodnik po funkcji VBA UBound
  2. OFFSET Funkcja Excela (przykład, zastosowania)
  3. Utwórz hiperłącze w Excel VBA
  4. Jak korzystać z uchwytu wypełnienia programu Excel?

Kategoria: