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
참고 항목
작업
방법: Partial 메서드 만들기(Visual Basic)