Jak używać zmiennych w podprocedur programu Excel w programie Visual Basic dla aplikacji

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 843144 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

WPROWADZENIE

W tym artykule opisano sposób używania zmiennych w programie Microsoft Programu Excel w programie Microsoft Visual Basic for podprocedur Aplikacje.

Więcej informacji

Zmienne w procedurę typu sub

Rozbudowanych funkcji języków programowania jest możliwość tak, aby zawartość zmiennej można przechowywać coś w zmiennej lub można zmienić później w procedurze. W tym dokumencie omówiono następujące Użycie zmiennych w języku Visual Basic:
  • W jaki sposób są zadeklarowane zmienne.
  • Procedury i projekty, które można użyć Zmienna.
  • Okres istnienia zmiennej.

Zadeklaruj zmienną w makrze

Najprostszy sposób deklarowania zmiennej w makrze jest użycie Dim Instrukcja. Następujący wiersz deklarowana jako dwie zmienne, x i y, Liczby całkowite:
Dim x As Integer, y As Integer
X i y, określone jako liczby całkowite, sprawi, że języka Visual Basic do odłogowania wystarczającej ilości pamięci dla zmiennej liczby całkowitej (2 bajty x a y) oraz że informacje są przechowywane w x lub y jest liczbą całkowitą między -32768 do 32767.

Uwaga W przypadku więcej niż jednej zmiennej za pomocą pojedynczego Dim oświadczenie, należy określić typ danych dla każdego Zmienna.

Jeśli nie określisz typu danych dla każdej zmiennej w Poniższy kod języka Visual Basic tylko zmiennej y jest skonfigurowana jako liczba całkowita Zmienna. Zmienna x będzie typ wariantu:
Dim x, y As Integer
Aby uzyskać dodatkowe informacje zobacz "typ danych Variant" sekcja.

Aby wykonać test zmiennej, wykonaj następujące kroki:
  1. Zapisz i zamknij wszystkie otwarte skoroszyty, a następnie otwórz nowy skoroszyt.
  2. Uruchom Edytor Visual Basic (naciśnij klawisze ALT + F11).
  3. Na Wstaw menu, kliknij przyciskModuł.
  4. Wpisz następujący kod:
    Sub Variable_Test()
    Dim x As Integer, y As Integer
    x = 10
    y = 100
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
  5. Uruchom Variable_Test makro. Wyświetlany jest następujący komunikat:
    wartość x jest 10
    wartość y wynosi 100
  6. Kliknij przycisk OK.
  7. W Variable_Test Makro zmień następujący wiersz:
    x = 10
    

    Aby:
    x = "error"
    
  8. Uruchom Variable_Test makro.
Zostanie wyświetlony błąd w czasie wykonywania, ponieważ nie jest "błąd" Liczba całkowita i próbuje przypisać wartość ta zmienna typu Liczba całkowita x.

Podsumowanie typów danych

W poniższej tabeli wymieniono popularne typy zmiennych danych:

Zwiń tę tabelęRozwiń tę tabelę
Typ danychLimit rozmiaru dla składowaniaDopuszczalny zakres
Wartość logiczna 2 bajty Wartość PRAWDA lub FAŁSZ
Liczba całkowita 2 bajty -od 32 768 do 32 767.
Długie 4 bajty 648 do 2 147 483 647
Podwójne 8 bajtów -1, 79769313486232E308 do -4, 94065645841247E-324 dla wartości ujemnych; 4, 94065645841247E-324 do 1, 79769313486232E308 dla wartości dodatnich
Waluta 8 bajtów -922,337,203,685,477.5808 do 922,337,203,685,477.5807
Data 8 bajtów 1 Stycznia 100 do 31 grudnia 9999
Ciąg Bajty 10 + długość ciągu

Typ danych Variant

Jeśli nie zostanie określony typ danych, Deklarując zmienną, lub nie we wszystkich zadeklarować zmienną, kodu języka Visual Basic automatycznie określa Typ danych Variant dla tej zmiennej. Poniżej przedstawiono zalety Zmienne zadeklarowane jako typ danych to:
  • Zmienne mogą zawierać ciąg, datę, godzinę, wartość logiczna, lub wartości liczbowe.
  • Zmienne można konwertować wartości, które zawierają automatycznie.
Wadą jest to, że zmienne wariantu wymaga co najmniej 16 Liczba bajtów pamięci. 16 bajtów pamięci mogą być znaczne w bardzo dużych procedur lub w modułach złożonych.

Aby zobaczyć, jak działa Variable_Test makra, wykonaj następujące kroki:
  1. Zmień kod w Variable_Test makra:
    Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
    
  2. Uruchom Variable_Test makro.
Nie zostanie wyświetlony błąd, ponieważ można przypisać nic Zmienne wariantu x i y.

Uwaga Można również pozostawić się następujący wiersz i będzie makra nadal działają jako zmienne x i y są traktowane jako wariant typy danych:
Dim x, y

Zakres zmiennej

Deklarując zmienną mogą lub nie mogą być widoczne przez inne makra w tym samym module, w innych modułach lub w innych projektach. To dostępność zmiennej w modułach nosi nazwę zakresu. Trzy typy zakres są procedury, prywatnego moduł poziom i publicznych poziom modułu. Zakres zależy od tego, jak i gdzie zadeklarowana zmienna lub zmienne.

Zakres poziom procedury

Zmienna o zasięgu na poziomie procedury nie jest widoczny poza Procedura w przypadku gdy jest zadeklarowany. Jeśli zostanie ustawiona wartość zmiennej, która ma zakres poziom procedury, że zawartość zmiennej nie będą widoczne dla innych makra.

Aby sprawdzić, czy jest zmiennej o zakresie poziom procedury widoczne na zewnątrz procedury, jeżeli zadeklarowano, wykonaj następujące kroki:
  1. Włóż nowy moduł do projektu.
  2. Do tego modułu, należy wpisać oba następujące makra:
    Sub Macro1()
    Dim x As Integer
    x = 10
    MsgBox "x, as seen by Macro1 is " & x
    'the next line runs Macro2
    Macro2
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    x, jak widziane przez Makro1 wynosi 10
  4. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x, jak widziane przez Macro2 jest
  5. Kliknij przycisk OK.
Macro2 nie wyświetla wartości dla zmiennej x, ponieważ zmienna x jest lokalne Makro1.

Prywatne i publiczne zasięgu na poziomie modułu

Można zdefiniować zmienne w sekcji deklaracji modułu (w górnej części modułu przede wszystkim sub procedury) i ustaw zakres sieci za pomocą zmiennej Publiczne wyciąg, Dim oświadczenie, lub Prywatne Instrukcja. Jeśli umieścisz Publiczne sprawozdania z przodu zmienna będzie zmienna dostępne dla wszystkich makr wszystkie moduły w projekcie. Jeśli umieścisz albo Dim oświadczenie lub Prywatne Instrukcja z przodu zmienna zmienna jest dostępna tylko do makr w module, gdzie jest zostały zgłoszone.

Aby zobaczyć Różnica między Publiczne Instrukcja i Dim oświadczenie, wykonaj następujące kroki:
  1. Zapisz i zamknij wszystkie otwarte skoroszyty, a następnie otwórz nowy skoroszyt.
  2. Uruchom Edytor Visual Basic.
  3. Wstawianie modułu do projektu.
  4. Wpisz następujący kod do modułu, to:
    Public x As Integer
    Sub Macro_1a()
    x = 10
    MsgBox x
    Macro_1b
    End Sub
    Sub Macro_1b()
    x = x * 2
    MsgBox x
    Macro2
    End Sub
    
  5. Włóż inny moduł do projektu.
  6. Wpisz następujący kod do modułu, to:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Uruchom Macro_1a makra w pierwszego modułu.

    Zadeklarowana zmienna x "Publiczne x jako całkowitą", wszystkie trzy makra w projekcie mają dostęp do wartość x. Pierwsze pole komunikat wyświetla wartość 10. Drugi komunikat pole wyświetla wartość 20 (ponieważ x jest mnożona przez 2 w Macro_1b). Trzecie pole komunikat wyświetla wartość 60 (ponieważ wartość x została zmieniona na 20 cali Macro_1b a następnie został mnożony przez 3 Macro2).
  8. Zmienić wiersz deklaracji w module pierwszy od:
    Public x As Integer

    Aby:
    Dim x As Integer
  9. Uruchom Macro_1a makro.

    Zmienna x zadeklarowany jako "Dim x jako Liczba całkowita", tylko makra pierwszego modułu mają dostęp do wartości x. Tak pierwsze pole komunikat wyświetla wartość 10, wyświetla okno komunikatu drugiego wartość 20, (ponieważ x jest mnożona przez 2 w Macro_1b) i trzecim polu komunikat wyświetla wartość 0 (ponieważ Macro2 nie widać wartości x i niezainicjowaną wartość zero używane przez Makro 2).
  10. Zmienić wiersz deklaracji w module pierwszy od:
    Dim x As Integer

    Aby:
    Private x As Integer
  11. Uruchom Macro_1a makro.
Te same pola wiadomości są wyświetlane przy użyciu Prywatne Instrukcja zakresu, jak za pomocą Dim Instrukcja. Zmienna x ma ten sam zakres prywatnego do Moduł, gdzie został zadeklarowany.

Uwaga Jeśli mają zakres zmiennej, zostać ograniczony do Moduł, w przypadku gdy jest on zadeklarowany jako, użyj Prywatne Instrukcja zamiast Dim Instrukcja. Oba osiągnąć ten sam efekt, ale jest zakres wyraźniejsze podczas czytania kodu, jeśli używasz Prywatne Instrukcja.

Okres istnienia zmiennej

Czas, w którym zmiennej zachowuje swoją wartość jest znany jako jego okres istnienia. Wartość zmiennej z czasem zmieniać jego użytkowania, ale będzie on Zachowaj wartości. Również, gdy zmienna traci zakresu, nie ma ono wartość.

Inicjowanie wartości zmiennej

Po uruchomieniu makra, wszystkie zmienne zostały zainicjowane do wartość. Zmienna numeryczna jest ustawiana na zero, to ciąg o zmiennej długości zainicjowany na ciąg znaków o zerowej długości (""), i podać ciąg znaków o stałej długości Kod ASCII 0. Można zainicjować zmiennych typu Variant są puste. Puste zmienna jest reprezentowany przez zero w kontekście numeryczne i ciąg znaków o zerowej długości ("") w kontekście ciąg.

Zmienne na poziomie procedury

Jeśli masz Zmienna zadeklarowana w makrze przy użyciu Dim oświadczenie, zmiennej zachowuje swoją wartość tak długo, jak makro jest uruchomiony. Jeśli to makro, wywołuje inne makra, wartość zmiennej jest zachowane (nie są dostępne inne makra chociaż) jak długie one inne makra są również uruchomiona.

Wykazanie zmiennymi jak poziom procedury Praca, wykonaj następujące kroki:
  1. Włóż nowy moduł do projektu.
  2. Do tego modułu, należy wpisać oba następujące makra:
    Sub Macro1()
    'set x as a procedure level variable
    Dim x As Integer
       MsgBox "the initialized value of x is " & x
    x = 10
    MsgBox "x is " & x
    'the next line runs Macro2
    Macro2
    MsgBox "x is still " & x
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    zainicjowana wartość x 0
  4. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x jest 10
  5. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x, jak widziane przez Macro2 jest
  6. Kliknij przycisk OK.

    Macro2 nie wyświetla wartości dla zmiennej x, ponieważ zmienna x jest lokalne Makro1. Wyświetlany jest następujący komunikat:
    x jest nadal 10
  7. Kliknij przycisk OK.
  8. Uruchom Makro1.
Odbierania tej wiadomości, które są opisane w krokach 3 do 6, ponieważ jak najszybciej Makro1 zatrzymane w kroku 6, wartość zmiennej x zostało utracone. Dlatego po ponownym uruchomieniu Makro1 w kroku 7 Pierwsza wiadomość będzie wyświetlana wartość x jako zero ( zainicjowana wartość).

Słowa kluczowego static

Jeśli zmienna poziom procedury jest zadeklarowana za pomocą statycznego słowo kluczowe, zmienna zachowuje jej wartość, dopóki projekt nie zostanie zresetowane. W związku z tym, Jeśli zmienna statyczna przy następnym wywołaniu procedury, statyczna zmienna jest ustawiana na ostatnią wartość.

Aby zobaczyć jak Works słowa kluczowego static, wykonaj następujące kroki:
  1. Zmień kod w Makro1 Aby:
    Sub Macro1()
    'set x as a procedure level variable
    Static x As Integer
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    zainicjowana wartość x 0
  3. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x jest 10
  4. Kliknij przycisk OK.
  5. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    zainicjowana wartość x 10
  6. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x jest 20
  7. Kliknij przycisk OK.
Wartości, które pojawiają się w wiadomości są różne drugi czas, ponieważ zmienna x jest zadeklarowana jako zmienna statyczna i zmiennej zachowuje swoją wartość po uruchomieniu Makro1 po raz pierwszy.

Uwaga Jeśli zmienna poziom modułu, jego okres istnienia jest taka sama jak jakby zmiennej statycznej poziom procedury.

Aby zweryfikować istnienia poziom modułu zmiennej wykonaj następujące kroki:
  1. Zmień kod w module, który zawiera Makro1 do następującego:
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    zainicjowana wartość x 0
  3. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x jest 10
  4. Kliknij przycisk OK.
  5. Uruchom Makro1.

    Wyświetlany jest następujący komunikat:
    zainicjowana wartość x 10
  6. Kliknij przycisk OK.

    Otrzymujesz następujący komunikat:
    x jest 20
  7. Kliknij przycisk OK.
Wartości, które pojawiają się w wiadomości są różne drugi czas, ponieważ zmienna x jest zadeklarowana jako zmienna statyczna i zachowuje jej wartość po uruchomieniu Makro1 po raz pierwszy.

Resetowanie projektu, aby zresetować zmiennych

Jeżeli chcesz przywrócić wartości dla zmiennej statycznej lub Kliknij zmienną, poziom modułu Resetuj przycisk Standard pasek narzędzi lub kliknij Resetuj na Uruchom menu.

W takim Makro1 Projekt, a następnie uruchom ponownie Makro1, wartości zmiennej x jest inicjowana z powrotem na zero, a pierwszy komunikat:
zainicjowana wartość x 0
Aby uzyskać więcej informacji kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
843145Opis podprocedur programu Excel w programie Visual Basic for Applications (Tablice)
Powrót do u góry

Właściwości

Numer ID artykułu: 843144 - Ostatnia weryfikacja: 20 września 2011 - Weryfikacja: 3.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Słowa kluczowe: 
kbvba kbprogramming kbinfo kbmt KB843144 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:843144

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com