본문 바로가기
언어 참조

Sub 프로시저 작성

2023. 8. 1.

이 글은 도움말을 번역한 글입니다.

Sub 프로시저는 작업을 수행하지만 값을 반환하지 않는 Sub 및 End Sub 문으로 둘러싸인 일련의 Visual Basic 문입니다.

Sub Greeting()

    ' Sub 프로시저 정의: Greeting()
    ' 이 프로시저는 인사말을 출력하는 동작을 수행합니다.
    
    Dim name As String
    ' 문자열 변수 name 선언
    
    name = InputBox("이름을 입력하세요:", "인사하기")
    ' 사용자로부터 이름을 입력받는 InputBox를 띄웁니다.
    
    If name <> "" Then
        ' 만약 사용자가 이름을 입력했다면
        
        MsgBox "안녕하세요, " & name & "님!", vbInformation
        ' "안녕하세요, [name]님!" 메시지를 보여줍니다.
    Else
        ' 만약 사용자가 이름을 입력하지 않았다면
        
        MsgBox "이름을 입력하지 않으셨군요. 안녕히 가세요!", vbExclamation
        ' "이름을 입력하지 않으셨군요. 안녕히 가세요!" 메시지를 보여줍니다.
    End If
    
End Sub

이름을 입력한 경우

이름을 입력하지 않은 경우

Sub 프로시저는 상수, 변수 또는 호출하는 프로시저로 전달되는 표현식과 같은 인수를 가질 수 있습니다.

Sub PrintMessage(message As String)
    MsgBox message
End Sub

위 프로시저는 PrintMessage라는 이름을 가지며, 하나의 인수를 받습니다. 인수의 이름은 message이고, 이 인수는 String 타입으로 선언되었습니다. 이 Sub 프로시저는 message에 전달된 값을 메시지로 출력하는 작업을 수행합니다.

다른 프로시저에서 이 Sub 프로시저를 호출할 때, 인수에 원하는 값을 넣어서 호출할 수 있습니다

Sub Main()
    Dim myText As String
    myText = "Hello, World!"
    
    PrintMessage myText
End Sub

Sub Main()

    Dim myText As String
    
    myText = "Hello, World!"
    
   Call PrintMessage(myText)
   
End Sub

예제 코드 - 1

Sub GreetConstant()
    ' Sub 프로시저 정의: GreetConstant()
    ' 인사말을 출력하는 동작을 수행합니다.
    
    Dim greeting As String
    greeting = "Hello, "
    
    Dim name As String
    name = "John"
    
    MsgBox greeting & name & "!", vbInformation
    
End Sub

예제 코드 - 2

Sub GreetVariable(name As String)
    ' Sub 프로시저 정의: GreetVariable(name As String)
    ' name을 인수로 받아 인사말을 출력하는 동작을 수행합니다.
    
    Dim greeting As String
    greeting = "Hi, "
    
    MsgBox greeting & name & "!", vbInformation
End Sub

Sub Main()
    ' Sub 프로시저 정의: Main()
    ' GreetVariable 프로시저를 호출하여 personName을 인수로 전달합니다.
    
    Dim personName As String
    personName = "Alice"
    
    Call GreetVariable(personName)
End Sub

예제 코드 -3

Sub CalculateExpression(number1 As Integer, number2 As Integer)
    ' Sub 프로시저 정의: CalculateExpression(number1 As Integer, number2 As Integer)
    ' number1,number2를 인수로 받아 두 수의 합을 출력하는 동작을 수행합니다.
    
    Dim result As Integer
    result = number1 + number2
    
    MsgBox "두 수의 합: " & result, vbInformation
End Sub

Sub Main()
    ' Sub 프로시저 정의: Main()
    ' CalculateExpression 서브 프로시저를 호출하여 x,y를 인수로 전달합니다.
    
    Dim x As Integer
    x = 10
    
    Dim y As Integer
    y = 20
    
    Call CalculateExpression(x, y)
End Sub

만약 Sub 프로시저에 인수가 없다면 Sub 문에 빈 괄호를 포함해야 합니다.

Sub SayHello()
    
    ' 인수가 없는 서브 프로시저로, 간단한 인사말을 출력하는 동작을 수행합니다.
    
    MsgBox "Hello, World!", vbInformation
    
End Sub

Sub Main()

    ' SayHello 서브 프로시저를 호출합니다. (인수 없음)
    
    Call SayHello
    
End Sub

다음 Sub 프로시저에는 각 줄을 설명하는 주석이 있습니다.

' GetInfo라는 이름의 프로시저를 선언합니다.
' 이 Sub 프로시저는 인수를 사용하지 않습니다.
Sub GetInfo()
' answer라는 문자열 변수를 선언합니다.
Dim answer As String
' InputBox 함수의 반환 값을 answer에 할당합니다.
answer = InputBox(Prompt:="이름을 입력하세요.")
' 조건부 If...Then...Else 문입니다.
If answer = Empty Then
' MsgBox 함수를 호출합니다.
MsgBox Prompt:="이름을 입력하지 않았습니다."
Else
' MsgBox 함수와 변수 answer를 결합하여 메시지를 표시합니다.
MsgBox Prompt:="당신의 이름은 " & answer & "입니다."
' If...Then...Else 문을 마칩니다.
End If
' Sub 프로시저를 마칩니다.
End Sub

도움말 출처

Writing a Sub procedure (VBA)

Office VBA reference topic

learn.microsoft.com

'언어 참조' 카테고리의 다른 글

함수에서 문자열 반환  (0) 2023.08.01
Function 프로시저 작성  (0) 2023.08.01
Select Case문 사용  (0) 2023.07.31
If...Then...Else 문 사용  (0) 2023.07.31
선언문 작성  (0) 2023.07.31