Sub 문(Visual Basic)

Sub 프로시저를 정의하는 이름, 매개 변수 및 코드를 선언합니다.

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

구성 요소

용어

내용

attributelist

선택적 요소로서, 특성 목록을 참조하십시오.

Partial

선택적 요소로서, 부분 메서드(Partial Method)의 정의를 나타냅니다. 부분 메서드(Visual Basic)를 참조하십시오.

accessmodifier

선택적 요소로서, 다음 중 하나일 수 있습니다.

Visual Basic의 액세스 수준를 참조하십시오.

proceduremodifiers

선택적 요소로서, 다음 중 하나일 수 있습니다.

Shared

선택적 요소로서, Shared를 참조하십시오.

Shadows

선택적 요소로서, Shadows를 참조하십시오.

name

필수적 요소로서, 프로시저의 이름입니다. 선언된 요소 이름(Visual Basic)를 참조하십시오. 클래스에 대한 생성자를 프로시저를 만들려면 Sub 프로시저의 이름을 New 키워드로 설정합니다. 자세한 내용은 개체 수명: 개체가 만들어지고 소멸되는 방법(Visual Basic)을 참조하십시오.

typeparamlist

선택적 요소로서, 제네릭 프로시저의 형식 매개 변수 목록입니다. 형식 목록을 참조하십시오.

parameterlist

선택적 요소로서, 이 프로시저의 매개 변수를 나타내는 지역 변수 이름 목록입니다. 매개 변수 목록(Visual Basic)를 참조하십시오.

Implements

선택적 요소로서, 이 프로시저에서 하나 이상의 Sub 프로시저를 구현하며 각 프로시저가 이 프로시저의 포함하는 클래스 또는 구조체에서 구현되는 인터페이스에 정의되었음을 나타냅니다. Implements 문을 참조하십시오.

implementslist

Implements문을 사용할 경우 필수적 요소입니다. 구현될 Sub 프로시저 목록입니다.

implementedprocedure [ , implementedprocedure ... ]

각 implementedprocedure의 구문과 구성 요소는 다음과 같습니다.

interface.definedname

파트설명
interface 필수적 요소로서,이 프로시저의 포함하는 클래스 또는 구조체에 의해 구현되는 인터페이스의 이름입니다.
definedname 필수적 요소로서,프로시저를 interface에 정의할 때 사용되는 이름입니다.

Handles

선택적 요소로서, 이 프로시저에서 하나 이상의 특정 이벤트를 처리할 수 있음을 나타냅니다. Handles 절(Visual Basic)를 참조하십시오.

eventlist

Handles를 제공하는 경우 필수적 요소입니다. 이 프로시저에서 처리하는 이벤트 목록입니다.

eventspecifier [ , eventspecifier ... ]

각 eventspecifier의 구문과 구성 요소는 다음과 같습니다.

eventvariable.event

파트설명
eventvariable 필수적 요소로서,이벤트를 발생시키는 클래스 또는 구조체의 데이터 형식으로 선언된 개체 변수입니다.
event 필수적 요소로서,이 프로시저에서 처리하는 이벤트의 이름입니다.

statements

선택적 요소로서, 이 프로시저 내에서 실행될 문 블록입니다.

End Sub

이 프로시저의 정의를 종료합니다.

설명

모든 실행 코드는 프로시저 내에 있어야 합니다. 호출 코드에 값을 반환할 필요가 없을 때 Sub 프로시저를 사용하고 값을 반환할 때 Function 프로시저를 사용합니다.

Sub 키워드는 모듈 수준에서만 사용할 수 있습니다. 즉, sub 프로시저의 선언 컨텍스트는 클래스, 구조체, 모듈 또는 인터페이스여야 하며 소스 파일, 네임스페이스, 프로시저 또는 블록이 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.

Sub 프로시저는 기본적으로 공용 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다.

규칙

  • 구현. 이 프로시저가 Implements 키워드를 사용하는 경우 포함하는 클래스 또는 구조체에 대한 Implements 문은 해당 Class 또는 Structure 문 바로 다음에 나와야 합니다. Implements 문에는 implementslist에 지정된 각 인터페이스가 포함되어야 합니다. 그러나 인터페이스가 definedname에서 Sub을 정의할 때 사용하는 이름이 name에서의 이 프로시저의 이름과 같을 필요는 없습니다.

동작

  • 프로시저에서 반환. Sub 프로시저가 호출 코드로 반환되는 경우 해당 프로시저를 호출한 문 다음에 오는 문에서 실행이 계속됩니다.

    Exit Sub 및 Return 문은 Sub 프로시저를 즉시 끝냅니다. 프로시저 내의 임의의 위치에 여러 개의 Exit Sub 및 Return 문을 사용할 수 있으며 Exit Sub 문과 Return 문을 혼합하여 사용할 수 있습니다.

    다음 예제에서는 Sub 프로시저에서의 반환을 보여 줍니다.

    Sub mySub(ByVal q As String)
        Return
    End Sub 
    
  • 프로시저 호출. Sub 프로시저도 Function 프로시저처럼 여러 매개 변수를 사용하고 여러 문을 수행하는 별도의 프로시저입니다. 그러나 값을 반환하는 Function 프로시저와는 달리 Sub 프로시저는 식에 사용될 수 없습니다.

    Sub 프로시저를 호출하려면 문에 프로시저 이름과 괄호로 묶은 인수 목록을 차례로 사용합니다. 인수를 사용하지 않을 경우에만 괄호를 생략할 수 있습니다. 그러나 항상 괄호를 포함하면 코드를 보다 쉽게 읽을 수 있습니다.

    필요에 따라 Call 문을 사용하여 Sub 프로시저를 호출할 수도 있습니다. 이렇게 하면 코드를 쉽게 읽을 수 있습니다.

문제 해결

실행 순서. Visual Basic에서는 내부 효율성을 향상시키기 위해 산술식을 다시 정렬하기도 합니다. 따라서 인수 목록에 다른 프로시저를 호출하는 식이 포함되어 있으면 프로시저를 특정 순서로 호출할 수 없습니다.

예제

다음 예제에서는 Sub 문을 사용하여 Sub 프로시저의 본문을 형성하는 이름, 매개 변수 및 코드를 정의합니다.

Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub

참고 항목

작업

방법: 제네릭 클래스 사용(Visual Basic)

프로시저 문제 해결(Visual Basic)

방법: Partial 메서드 만들기(Visual Basic)

참조

Implements 문

Function 문(Visual Basic)

매개 변수 목록(Visual Basic)

Dim 문(Visual Basic)

Call 문(Visual Basic)

Of 절(Visual Basic)

개념

매개 변수 배열(Visual Basic)

부분 메서드(Visual Basic)