차례:
- 다음 루틴은 선택적인 Else 절이없는 If-Then 구조를 보여줍니다.
- 앞의 문제에 대한 또 다른 접근법은 Else 절을 사용합니다. 다음은 If-Then-Else 구조를 사용하는 동일한 루틴입니다.
- 앞의 예제에서 루틴의 모든 문이 실행됩니다. 약간 더 효율적인 구조는 조건이 참 되 자마자 루틴을 종료합니다. 아침에, 예를 들어, 절차는 굿모닝 메시지를 표시하고 종료 한 다음 다른 불필요한 조건을 평가하지 않아야합니다.
- Sub ShowDiscount () 딤섬으로 긴 딤섬으로 할인 (Double Quantity As Long Quantity) = InputBox ( "수량 입력 :") Quantity > 0 Then Discount = 0 1 Quantity> = 25 인 경우 Discount = 0 15 Quantity> = 50 인 경우 Discount = 0. 2 Quantity> = 75 인 경우 Discount = 0. 25 MsgBox "Discount :"& Discount End Sub
비디오: [엑셀 Visual Basic]나만의 함수 만들기 2024
If-Then은 VBA의 가장 중요한 제어 구조입니다. 아마이 명령을 매일 사용하게 될 것입니다. 조건 적으로 하나 이상의 명령문을 실행하려면 If-Then 구조를 사용하십시오. 선택적 Else 절이 포함되어 있으면 테스트중인 조건이 가 아닌 경우 하나 이상의 명령문을 실행할 수 있습니다. 다음은 If-Then-Else 구조를 사용하기 위해 작성된 간단한 CheckUser 프로 시저입니다.
If-Then 예제다음 루틴은 선택적인 Else 절이없는 If-Then 구조를 보여줍니다.
Sub GreetMe () Time <0. 5 일 때 MsgBox"Good Morning "End Sub
GreetMe 프로시 저는 VBA의 시간 함수를 사용하여 시스템 시간을 얻습니다. 현재 시간이보다 작 으면. 5, 루틴은 친숙한 인사말을 표시합니다. 시간이 더 크거나 같으면 5, 루틴은 끝나고 아무 일도 일어나지 않습니다.
- ->
시간이 큼보다 크거나 같으면 다른 인사말을 표시합니다. 5이면, 첫 번째 다음에 다른 If-Then 문을 추가 할 수 있습니다.Sub GreetMe2 () Time = 0. 5 Then MsgBox "Good Afternoon"End Sub
> = (크거나 같음) 두 번째 If-Then 문에 사용됩니다. 이것은 하루 종일 보장됩니다. > (보다 큼)을 사용했다면이 절차가 정오 12시에 정확하게 실행되면 아무 메시지도 나타나지 않습니다. 그럴 가능성은 거의 없지만 이와 같은 중요한 프로그램을 통해 어떤 기회도 원하지는 않을 것입니다.
-
If-Then-Else 예제앞의 문제에 대한 또 다른 접근법은 Else 절을 사용합니다. 다음은 If-Then-Else 구조를 사용하는 동일한 루틴입니다.
Sub GreetMe3 () Time <0. 5이면 MsgBox "Good Morning"Else _ MsgBox "Good Afternoon"End Sub
앞의 예에서 연속 문자 (밑줄)가 사용되었습니다. If-Then-Else 문은 실제로는 하나의 문입니다. VBA는 End If 문을 사용하는 If-Then-Else 구문을 코딩하는 약간 다른 방법을 제공합니다. 따라서 GreetMe 절차는Sub GreetMe4 () 시간이 <0.5 인 경우 MsgBox "Good Morning"Else MsgBox "Good Afternoon"End If End Sub
사실 아래에 여러 문을 삽입 할 수 있습니다. Else 부분에있는 부분 및 개수의 문 이 구문은 읽기 쉽고 문장을 더 짧게 만듭니다.
GreetMe 루틴을 확장하여 세 가지 조건 (아침, 오후, 저녁)을 처리해야하는 경우에는 어떻게해야합니까? 다음과 같은 두 가지 옵션이 있습니다. If-Then 문을 세 개 사용하거나
중첩 If-Then-Else 구조를 사용합니다. 중첩 은 다른 If-Then-Else 구조 내에 If-Then-Else 구조를 배치하는 것을 의미합니다. 세 개의 If-Then 문을 사용하는 첫 번째 방법은 더 간단합니다. Sub GreetMe5 () 시간 = 0 인 경우 Dim Msg String 5 및 시간 = 0.75 Then Msg = "Evening"MsgBox "Good"& Msg End Sub
변수를 사용하여 새 꼬임이 추가되었습니다. Msg 변수는 시간에 따라 다른 텍스트 값을 얻습니다. MsgBox 문은 인사말을 표시합니다: Good Morning, Good Afternoon 또는 Good Evening.
다음 루틴은 동일한 작업을 수행하지만 If-Then-End If 구조를 사용합니다.
Sub GreetMe6 () 시간 = 0 인 경우 Dim Msg As String 5 및 시간 = 0.75 Then Msg = "Evening" End If MsgBox "Good"& Msg End Sub
ElseIf 사용
앞의 예제에서 루틴의 모든 문이 실행됩니다. 약간 더 효율적인 구조는 조건이 참 되 자마자 루틴을 종료합니다. 아침에, 예를 들어, 절차는 굿모닝 메시지를 표시하고 종료 한 다음 다른 불필요한 조건을 평가하지 않아야합니다.
이와 같은 작은 일과로 실행 속도에 대해 걱정할 필요가 없습니다. 그러나 속도가 중요한 대형 응용 프로그램의 경우 If-Then 구조에 대한 다른 구문을 알아야합니다.
다음 구문을 사용하여 GreetMe 루틴을 다시 작성하는 방법은 다음과 같습니다.
Sub GreetMe7 () 시간이 0 일 경우 Dim Msg As String 5와 시간 <0. 75 then Msg = "오후"Else Msg = "Evening "End If MsgBox"Good "& Msg End Sub
조건이 참일 때 VBA는 조건문을 실행하고 If 구조가 끝납니다. 즉,이 절차는 이전 예제보다 약간 효율적입니다. 단점은 코드가 이해하기 어렵다는 것입니다.
If-Then 예제 다른 예제는 If-Then 구조의 간단한 형태를 사용하는 또 다른 예제입니다. 이 프로시 저는 사용자에게 수량을 입력하라는 메시지를 표시 한 다음 사용자가 입력 한 수량에 따라 적절한 할인을 표시합니다.
Sub ShowDiscount () 딤섬으로 긴 딤섬으로 할인 (Double Quantity As Long Quantity) = InputBox ("수량 입력:") Quantity > 0 Then Discount = 0 1 Quantity> = 25 인 경우 Discount = 0 15 Quantity> = 50 인 경우 Discount = 0. 2 Quantity> = 75 인 경우 Discount = 0. 25 MsgBox "Discount:"& Discount End Sub
이 루틴의 각 If-Then 문이 실행되고 Discount의 값은 명령문이 실행될 때 변경 될 수 있습니다. 그러나 If-Then 문은 오름차순 할인 값 순서이므로 루틴은 할인에 대한 올바른 값을 궁극적으로 표시합니다.
다음 절차는 다른 ElseIf 구문을 사용하여 동일한 작업을 수행합니다. 이 경우 루틴은 true 조건에 대한 명령문을 실행 한 직후 종료됩니다.
Sub ShowDiscount2 () Dim Quantity As Long Quant 할인율 = InputBox ("Enter Quantity:") Quantity> 0 and Quantity <25 할인 = 0.1 ElseIf Quantity> = 25 그리고 Quantity <50 then Discount = 0 15 ElseIf Quantity> = 50 그리고 Quantity <75 then Discount = 0. 2 ElseIf Quantity> = 75 Then Discount = 0 25 End If MsgBox "Discount:"& Discount End Sub
이러한 다중 If-Then 구조는 다소 번거롭습니다. 간단한 바이너리 결정을 위해서만 If-Then 구조를 사용할 수 있습니다.