eval (ez_write_tag ([[468,60], “sourcedaddy_com-box-3”, “ezslot_1”, 102, “0”, “0”])); 사용 Select Case 문
MS-Excel / 일반 서식
If … ElseIf를 사용하여 여러 테스트를 수행하는 것은 편리한 기술입니다. “VBA 도구”에 자주 사용됩니다. 그러나 필요한 테스트 수가 많아지면 빠르게 다루기가 어려워집니다. 2 ~ 3 개의 테스트는 괜찮지 만 그 이상은 논리를 따르기 어렵게 만듭니다.
이러한 상황에서는 VBA의 Select Case 문이 더 나은 선택입니다. 아이디어는 처음에 논리식을 제공 한 다음 가능한 일련의 결과를 나열하는 것입니다. 각각의 가능한 결과 (케이스라고 함)를 실행하려면 하나 이상의 VBA 문을 제공해야합니다. 구문은 다음과 같습니다.
Select Case TestExpression Case FirstCaseList Case SecondCaseList <etc> Case Else End Select
TestExpression
이 표현식은 구조의 시작 부분에서 평가됩니다. 값 (논리, 숫자, 문자열 등)을 반환해야합니다.
CaseList
TestExpression에 대해 가능한 하나 이상의 결과 목록입니다. 이러한 결과는 쉼표로 구분 된 값 또는 표현식입니다 .VBA는의 각 요소를 검사합니다. 목록을 사용하여 TestExpression과 일치하는지 확인합니다. 표현식은 다음 형식 중 하나를 취할 수 있습니다.ExpressionExpression To ExpressionIs LogicalOperator ExpressionTo 키워드는 값 범위를 정의합니다 (예 : 1에서 10). . Is 키워드는 값의 무제한 범위를 정의합니다 (예 : Is > = 100).
문
VBA가 다음의 일부인 경우 실행하는 명령문입니다. 연결된 CaseList가 TestExpression과 일치합니다. CaseList에 TestExpression에 대한 일치 항목이 포함되어 있지 않으면 VBA는 선택적 ElseStatements를 실행합니다.
참고 : 둘 이상의 CaseList에 일치하는 요소가 포함 된 경우 TestExpression, VBA는 Select Case 구조에서 처음 나타나는 CaseList와 관련된 문만 실행합니다.
Listing은 Select Case를 사용하여 Frequency 인수 문제를 처리하는 방법을 보여줍니다.
사용하는 절차 여러 값을 테스트 할 케이스 선택 A Select Case 예 : 테스트 점수를 문자 등급으로 변환
Select Case 문을 더 잘 이해할 수 있도록이 강력한 기능의 고유 한 재능을 더 잘 보여주는 또 다른 예를 살펴 보겠습니다. 구조. 다음 표에 따라 원시 시험 점수를 문자 등급으로 변환하는 절차를 작성한다고 가정합니다.
최초 점수 | 레터 등급 |
90 이상 | A |
80 ~ 89 | B |
70 ~ 79 | C |
60 ~ 69 | D |
60 미만 | F |
목록은 변환을 위해 Select Case 문을 사용하는 LetterGrade 프로 시저를 보여줍니다.
rawScore 인수는 0에서 100 사이의 정수 값입니다. Select Case 구조는 먼저 rawScore가 음수인지 확인하고 만약 그렇다면 함수는 오류 메시지를 반환합니다. 다음 Case 문은 점수가 60 점 미만인지 확인하고 해당하는 경우 문자 등급 “F”를 반환합니다. 다음 Case 문은 70 점 미만의 점수를 찾습니다. 여기까지 도달하면 점수가 60 점 이상이라는 것을 이미 알고 있습니다 (위의 Case 문 덕분에). 따라서이 사례는 점수가 60에서 70 사이 (60 포함, 70 제외). 그렇다면 문자 등급 “D”가 반환됩니다. 나머지 Case 문은 동일한 방식으로 진행됩니다. Case Else는 100 점이 넘는 점수를 확인하고 그 점수가있는 경우 다른 오류 메시지를 반환합니다.
또 다른 예 : RGB 함수 길들이기
필요할 때마다 RGB (빨간색, 녹색, 파란색) VBA 함수를 사용할 수 있습니다. 속성의 색상을 지정합니다. 세 가지 명명 된 인수 (빨간색, 녹색 및 파란색)는 각각 최종 색상에 혼합되는 각 구성 요소 색상의 양을 결정하는 0에서 255 사이의 정수입니다. 예를 들어 빨간색 구성 요소에서 0은 빨간색이 없음을 의미하고 255는 순수한 빨간색이 있음을 의미합니다. 세 값이 모두 같으면 회색 음영이 나타납니다.
다음은 공통 색상을 생성하는 각 구성 요소의 샘플 값입니다.
빨간색 | 파란색 | 녹색 | 결과 |
0 | 0 | 0 | 검정 |
0 | 0 | 255 | 파란색 |
0 | 255 | 0 | 녹색 |
0 | 255 | 255 | 청록색 |
255 | 0 | 0 | 빨간색 |
255 | 0 | 255 | 마르 젠타 |
255 | 255 | 0 | 노란색 |
255 | 255 | 255 | 흰색 |
그러나 이러한 조합을 외우는 대신 VBA 및 Select Case를 사용하여 색상을 더 쉽게 선택할 수 있도록하겠습니다. 은밀한 마비 대신 이름 (예 : “red”또는 “blue”)을 사용할 수있는 VBAColor 함수를 보여줍니다. 가장 일반적인 16 가지 색상을 설정하기위한 조합입니다.
색상 이름을 문자열로 받아들이고 해당 RGB 값을 반환하는 함수
VBAColor는 색상의 이름 인 colorName이라는 단일 인수를 사용합니다. 함께 일하고 싶다. Select Case 문이 오류를 방지하기 위해 인수를 마사지하는 방법을 확인합니다.
Select Case LCase(Trim(colorName))
Trim 함수는 시작 부분에 불필요한 공백을 제거하고 인수의 끝이고 LCase 함수는 colorName을 소문자로 변환합니다. 이렇게하면 함수가 대소 문자를 구분하지 않습니다. 즉, “검은 색, 검은 색 또는 검은 색을 전송하는지 여부는 중요하지 않습니다. 함수는 계속 작동합니다.
나머지 함수는 Case 문을 사용하여 다양한 색상 이름을 지정하고 적절한 RGB 값을 반환합니다. ColorTester 프로 시저를 사용하여 VBAColora 소용돌이를 제공 할 수 있습니다.이 프로시 저는 현재 선택된 워크 시트 셀의 글꼴 색상 만 지정합니다.
참고 : VBA는 또한 다음과 같은 8 개의 색상 상수를 정의합니다. 기본 색상 (vbBlack, vbBlue, vbCyan, vbGreen, vbMagenta, vbRed, vbWhite 및 vbYellow) 만 필요할 때 사용할 수 있습니다.