선택적 매개변수에 기본값 제공
선택적 매개변수에 기본값을 지정할 수도 있습니다. 다음 예에서는 선택적 매개변수가 함수 프로시저에 전달되지 않으면 기본값이 반환됩니다.
SubListText(xAsString,선택적으로As_
정수=12345)
List1.AddItemx
List1.항목 추가
EndSub
PRivateSubCommand1_Click()
strName=yourname '두 번째 매개변수가 제공되지 않았습니다.
CallListText(strName) '"yourname"과 "12345"를 추가하세요.
EndSub
불확실한 수의 매개변수 사용 일반적으로 프로시저 호출의 매개변수 수는 프로시저 설명의 매개변수 수와 동일해야 합니다. ParamArray 키워드를 사용하면 프로시저가 임의 개수의 매개변수를 허용함을 나타낼 수 있습니다. 따라서 Sum 함수를 작성하여 다음과 같이 합계를 계산할 수 있습니다.
DimxAsInteger
DimyAsInteger
DimintSumAsInteger
SubSum(ParamArrayintNums())
ForEachxInintNums
y=yx
넥스트엑스
정수합=y
EndSub
PrivateSubCommand1_Click()
합계1,3,5,7,8
List1.AddItemintSum
EndSub
명명된 매개변수를 사용하여 간단한 문 만들기
많은 기본 제공 함수, 문 및 메서드의 경우 Visual Basic에서는 매개 변수 값을 빠르게 전달할 수 있는 명명된 매개 변수 메서드를 제공합니다. 명명된 매개변수의 경우 명명된 매개변수에 값을 할당하여 원하는 수의 매개변수를 순서에 관계없이 제공할 수 있습니다. 이렇게 하려면 명명된 인수 뒤에 콜론, 등호 및 값을 입력합니다(MyArgument:=SomeValue). 이러한 할당은 쉼표로 구분하여 순서에 관계없이 정렬할 수 있습니다. 다음 예의 매개변수 순서는 필수 매개변수의 순서와 반대입니다.
FunctionListText(strNameAsString,OptionalstrAddressAsString)
List1.AddItemstrName
List2.AddItemstrAddress
EndSub
PrivateSubCommand1_Click()
ListTextstrAddress:=12345,strName:=귀하의 이름
EndSub
위의 내용은 프로시저에 항상 지정할 필요가 없는 여러 선택적 매개변수가 있는 경우 더 유용합니다.
명명된 매개변수에 대한 지원 확인
명명된 매개 변수를 지원하는 함수, 문 및 메서드를 확인하려면 코드 창에서 AutoQuickInfo 함수를 사용하거나 개체 브라우저를 확인하거나 언어 참조를 참조하세요. 명명된 매개변수를 사용할 때는 다음 사항에 유의하세요.
VB(Visual Basic) 개체 라이브러리의 개체 메서드는 명명된 매개 변수를 지원하지 않습니다. VBA(Visual Basic for Application) 개체 라이브러리의 모든 언어 키워드는 명명된 매개 변수를 지원합니다.
구문에서 명명된 매개변수는 굵은 기울임꼴로 표시됩니다. 다른 모든 매개변수는 이탤릭체로만 표시됩니다.
명명된 매개변수를 사용할 때 필수 매개변수의 입력을 생략할 수 없다는 점에 유의하는 것이 중요합니다 . 선택적 매개변수만 생략할 수 있습니다. VB(Visual Basic) 및 VBA(Visual Basic for Application) 개체 라이브러리의 경우 개체 브라우저 대화 상자에서는 선택적 매개 변수를 대괄호 []로 묶습니다.
자세한 내용은 언어 참조에서 ByVal, ByRef, Optional 및 ParamArray를 참조하세요.
제어 구조 개요
제어 구조를 사용하면 프로그램 실행 흐름을 제어할 수 있습니다. 제어 흐름 문을 확인하지 않으면 프로그램은 이러한 문을 왼쪽에서 오른쪽으로, 위에서 아래로 실행합니다. 일부 간단한 프로그램은 단방향 흐름으로만 작성할 수 있고 일부 흐름은 연산자 우선 순위에 따라 제어될 수 있지만 모든 프로그래밍 언어의 효과와 유용성은 구조와 루프를 통해 문의 순서를 변경하는 능력에서 비롯됩니다.
의사결정 구조
Visual Basic 프로시저는 조건식을 테스트한 다음 테스트 결과에 따라 다양한 작업을 수행할 수 있습니다.
Visual Basic에서 지원하는 의사결정 구조는 다음과 같습니다.
1. 만약... 그렇다면
2.만약...그러면...그렇지 않으면
3.SelectCase
만약...그러면
If...Then 구조를 사용하여 하나 이상의 명령문을 조건부로 실행합니다. 한 줄 구문과 여러 줄 블록 구문을 모두 사용할 수 있습니다.
IfconditionThen문
If조건다음
진술
종료
조건은 일반적으로 비교이지만 숫자 값을 계산하는 모든 표현식이 될 수 있습니다. Visual Basic에서는 이 값을 True 또는 False로 해석합니다. 0 값은 False이고 0이 아닌 값은 True로 간주됩니다. 조건이 True이면 Visual Basic은 Then 키워드 뒤에 오는 모든 문을 실행합니다. 한 줄 또는 여러 줄 구문을 사용하여 조건부로 명령문을 실행할 수 있습니다(다음 두 예는 동일함).
IfanyDate<NowThenanyDate=현재
IfanyDate<NowThen
anyDate=지금
종료
참고: If...Then의 한 줄 형식에서는 EndIf 문을 사용하지 않습니다. 조건이 True일 때 여러 줄의 코드를 실행하려면 여러 줄 블록 If...Then...EndIf 구문을 사용해야 합니다.
IfanyDate<NowThen
anyDate=지금
Timer1.Enabled=False '타이머 제어가 비활성화되었습니다.
종료
만약...그러면...그렇지
If...Then...Else 블록을 사용하여 여러 문 블록을 정의하고 다음 문 중 하나를 실행합니다.
If조건1그러면
[statementblock-1]
[ElseIfcondition2Then
[statementblock-2]]...
[또 다른
[명령문 블록-n]]
종료
VisualBasic은 첫 번째 조건1을 테스트합니다. False이면 Visual Basic은 True인 조건을 찾을 때까지 조건 2 등을 테스트합니다. True인 조건을 찾으면 Visual Basic은 해당 문 블록을 실행한 다음 EndIf 다음에 나오는 코드를 실행합니다. 옵션으로, True인 조건이 없을 경우 Visual Basic이 실행하는 Else 문 블록을 포함할 수 있습니다.
If...Then...ElseIf는 If...Then...Else의 특별한 경우입니다. ElseIf 절을 원하는 만큼 사용할 수도 있고 전혀 사용하지 않을 수도 있습니다. ElseIf 절이 있는지 여부에 관계없이 Else 절이 있을 수 있습니다.
예를 들어, 애플리케이션은 메뉴 컨트롤 배열에서 클릭한 컨트롤에 따라 작업을 수행할 수 있습니다.
PrivateSubmnuCut_Click(IndexAsInteger)
IfIndex=0Then ''잘라내기' 명령.
CopyActiveControl '공통 프로시저를 호출합니다.
클리어액티브컨트롤
ElseIfIndex=1그러면 '"복사" 명령입니다.
CopyActiveControl
ElseIfIndex=2Then '지우기 명령입니다.
클리어액티브컨트롤
Else '명령어를 붙여넣으세요.
ActiveControl 붙여넣기
종료
EndSub
If...Then 구조에 언제든지 ElseIf 블록을 더 추가할 수 있습니다 . 그러나 각 ElseIf가 동일한 표현식을 다른 숫자 값과 비교할 때 이 구조를 작성하는 것은 지루합니다. 이 경우 SelectCase 의사결정 구조를 사용할 수 있습니다.
자세한 내용은 "VisualBasic6.0 언어 참조 매뉴얼"의 "If...Then...Else 문"을 참조하세요.
SelectCase
VisualBasic은 If...Then...Else를 대체하는 SelectCase 구조를 제공하므로 여러 문 블록 중 하나를 선택적으로 실행할 수 있습니다. SelectCase 문의 기능은 If...Then...Else 문과 유사하지만 다중 선택의 경우 SelectCase 문을 사용하면 코드를 더 쉽게 읽을 수 있습니다.
SelectCase는 구조 위의 테스트 표현식을 처리하고 한 번만 평가합니다. 그런 다음 Visual Basic은 식의 값을 구조의 각 Case 값과 비교합니다. 동일하면 Case와 관련된 명령문 블록이 실행됩니다.
SelectCase테스트표현
[케이스 표현 목록1
[명령문 블록-1]]
[케이스 표현목록2
[statementblock-2]]
.
.
.
[CaseElse
[명령문 블록-n]]
선택 종료
각 표현식 목록은 하나 또는 여러 값의 목록입니다. 목록에 여러 값이 있는 경우 값을 쉼표로 구분하세요. 각 명령문 블록에는 0개 이상의 명령문이 포함되어 있습니다.
둘 이상의 Case가 테스트 표현식과 일치하는 경우 첫 번째 일치 Case와 연관된 명령문 블록만 실행됩니다. 식 목록의 값이 테스트 식과 일치하지 않으면 Visual Basic은 CaseElse 절의 문을 실행합니다(선택 사항).
예를 들어 If...Then...Else 예제의 편집 메뉴에 명령을 추가한다고 가정해 보겠습니다. 이를 위해 ElseIf 절을 추가하거나 SelectCase를 사용하여 함수를 작성할 수 있습니다.
PrivateSubmnuCut_Click(IndexAsInteger)
SelectCaseIndex
Case0 '잘라내기' 명령.
CopyActiveControl '공통 프로시저를 호출합니다.
클리어액티브컨트롤
Case1 '"복사" 명령.
CopyActiveControl
Case2 '"지우기" 명령.
클리어액티브컨트롤
Case3 '붙여넣기 명령.
ActiveControl 붙여넣기
CaseElse
frmFind.Show '찾은 대화 상자를 표시합니다.
선택 종료
EndSub
SelectCase 구조 는 매번 시작 부분에서 표현식을 평가합니다. If...Then...Else 구조는 각 ElseIf 문에 대해 서로 다른 표현식을 평가합니다. If 문과 각 ElseIf 문이 동일한 표현식을 평가하는 경우에만 If...Then...Else 구조를 SelectCase 구조로 바꿀 수 있습니다.
->