PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Funkcja Sub

Deklaruje nazwę, argumenty i kod, który tworzy procdurę Sub.

Składnia rozkazu Sub, Private Sub, Public Sub, Friend Sub:

[Static] Sub NazwaProc [(ListaArg)]
  [rozkazy]
  [Exit Sub]
  [rozkazy]
End Sub

Private [Static] Sub NazwaProc [(ListaArg)]
  [rozkazy]
  [Exit Sub]
  [rozkazy]
End Sub

Public [Static] Sub NazwaProc [(ListaArg)]
  [rozkazy]
  [Exit Sub]
  [rozkazy]
End Sub

Friend [Static] Sub NazwaProc [(ListaArg)]
  [rozkazy]
  [Exit Sub]
  [rozkazy]
End Sub

Składnia instrukcji Sub, Private Sub, Public Sub i Friend Sub składa się z części:
Static (Opcjonalne). Określa, że lokalne zmienne procedury Sub zachowują swoją wartość pomiędzy wywołaniami procedury. Atrybut Static nie działa na zmienne zadeklarowane na zewnątrz procedury Sub, nawet jeżeli są używane wewnątrz procedury.
NazwaProc (Wymagany) Nazwa procedury zgodna ze standartami nazewnictwa.
ListaArg (Opcjonalne) Lista zmiennej reprezentujących argumenty, które są przekazywane do procedury Sub podczas wywoływania. Nazwy zmiennych powinny być oddzielone od siebie przecinkami.
rozkazy (Opcjonalne) Dowolna lista rozkazów , które mają być wykonane wewnątrz procedury.

Argument ListaArg składa się z części:
[Optional] [ByVal | ByRef] [ParamArray] NazwaArg[()] [As typ] [=DomyślnaWartość]
Optional (Opjonalny) Słowo kluczowe, określające, że argument nie jest wymagany. Jeżeli zostanie użyty, wszystkie argumenty listy ListaArg muszą być również opcjonalne i zadeklarowane przy użyciu słowa Optional. Słowo Optional nie może być użyte z żadnym argumentem jeżeli zostanie użyte ParamArray.
ByVal (Opcjonalne) Określa, że wartość zostanie przekazana przez wartość.
ByRef (Opcjonalne) (Domyślne) Określa, że wartość zostanie przekazana przez referencję.
ParamArray (Opcjonalny) Używane tylko z ostatnim argumentem na liście ListaArg, aby określić, że ostatni argument jest opcjonalną (Optional) tablicą elementów typu Variant. Słowo kluczowe ParamArray pozwala na wprowadzenie zmiennej liczby argumentów. ParamArray nie może być użyte z ByVal, ByRef lub Optional.
NazwaArg (Wymagane) Nazwa argumentu zgodna z konwencją nazewnictwa zmiennych.
typ (Opcjonalne) Określa typ danych argumentu (Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (aktualnie nie obsługiwany), Date, String lub Variant).
DomyślnaWartość (Opcjonalne) Wartość domyślna argumentu. Może to być stała lub wyrażenie stałe. Dotyczy tylko poprawnych parametrów lub opcjonalnych (Optional). Jeżeli typem argumentu jest Object, dopuszczalną wartością jest tylko Nothing.

Procedura Sub jest dostępna dla wszystkich procedur modułu.
Procedura Private Sub jest dostępna tylko w module, w którym została zadeklarowana.
Procedura Public Sub jest dostępna we wszystkich procedurach i we wszystkich modułach w aplikacji, chyba że zostało użyte Option Private, które powoduje, że procedury są publiczne tylko wewnątrz projektu, w którym rezydują.
Procedura Friend Sub (tylko w modułach klas) jest dostępna tylko w projekcie ale nie jest widziana przez kontroler instancji obiektu.

Procedury Sub mogą być rekurencyjne. Oznacza to, że mogą wywoływać siebie. Jednak rekurnecja może powodować błędy (stack overflow). Słowo Static zwykle nie jest używane w procedurach rekurencyjnych.

Cały wykonywalny kod musi być umieszczony wewnątrze procedur. Nie można stworzyć procedury Sub wewnątrz innej procedury Sub, Function lub Property.

Słowo kluczowe Exit Sub jest używane do bezwarunkowego zakończenia wykonywania procedury Sub. Wykonywanie programu jest kontynuowane od rozkazu następnego za wywołaniem procedury Sub. Dowolna liczba rozkazów Exit Sub może znajdować się w dowolnych miejscach wewnątrz procedury.

Podobnie jak procedura Function, procedura Sub jest oddzielną częścią programu, która może pobrać argumenty, wykonać wiele rozkazów i zmieniać wartość argumentów. Jednak w przeciwieństwie do procedury Function, która zwraca wartość, procedura Sub nie może być używana w wyrażeniach.

Procedurę Sub wywołuje się przez podanie jej nazwy z listą argumentów do przekazania. Procedury Sub można wywoływać również przez użycie rozkazu Call.

Zmienne używane wewnątrz procedur Sub dzielą się na dwie kategorie: lokalne - zadeklarowane wewnątrz procedury i zewnętrzne - zadeklarowana poza procedurą. Zmienne, które są zadeklarowane wewnątrz procedury (przy użyciu Dim lub równoważnego) są zawsze lokalne dla procedury. Zmienne, które są używane w procedurze a nie są w niej zadeklarowane są również lokalne, z wyjątkiem tych, które zostały zadeklarowane poza procedurą (na wyższym poziomie).

Procedury mogą korzystać ze zmiennych, które nie są zadeklarowane w procedurze, ale może powstać kofilkt nazw, jeżeli jest coś zdefiniowane na poziomie modułu, co ma taką samą nazwę. Jeżeli procedura odnosi się do niezadeklarowanej zmiennej, która ma taką samą nazwę jak inna procedura, zmienna lub stała, to zostanie przyjęte, że procedura odwołuje się do nazwy na poziomie modułu. Aby uniknąć takich konfliktów należy deklarować zmienne. Można użyć rozkazu Option Explicit aby wymusić deklaracje zmiennych.



Przykład użycia rozkazu Sub:

Sub Przyklad(intI As Integer)  'początek procedury
  If intI=0 Then  'sprawdzenie czy intI=0
   Exit Sub  'jeżeli tak to opuść procedurę
  Else
  intI=intI*3  'jeżeli nie to wykonaj obliczenie
  End If
End Sub  'koniec procedury


(Zmienne, typy zmiennych i rozkaz If Else zostały opisane w innych częściach kursu.)



na górę strony...


Google
 
Poprzednia | Wyżej | Strona główna | Spis Treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora