티스토리 뷰
▶ Goto문
▶ If ~ Then문
▶ Select Case문
▶ For ~Next문
For Each 요소 In 컬렉션 문
▶ Do ~ Loop문
Do While ~ Loop문, Do ~ While Loop문
Do Until ~ Loop문, Do ~ Until Loop문
■ Goto문
프로그램의 다음 실행 위치를 레이블이 지정된 곳으로 한다.
- 정상 흐름이 레이블을 만나지 않도록 레이블 전에 Exit 문을 삽입한다.
- 오류처리 코드에만 사용하라!!! (코드가 꼬일 수 있음)
[ 레이블 지정 ]
- 문자열 레이블 :
- 숫자
Sub GoTo_Demo() Dim i As String Dim a As Integer 1 i = InputBox("암호를 입력하시오") If i <> "1234" Then GoTo 2 Else MsgBox ("암호가 정확합니다") End If Exit Sub 2 a = MsgBox("암호를 다시 입력할까요?", vbOKCancel) If a = vbOK Then GoTo 1 End If End Sub |
■ If ~ Then문
IF 조건 Then 참일때 실행할 코드 End IF |
IF 조건 Then 참일때 실행할 코드 Else 거짓일때 실행할 코드 End IF |
IF 조건1 Then 조건1이 참일때 실행할 코드 ElseIF 조건2 Then 조건2가 참일때 실행할 코드 Else 그외 일때 실행할 코드 End IF |
Sub Discout() ' 구매 양에 따른 활인율 결정 Dim Quantity As Integer Dim Discount As Double Quantity = InputBox("Enter Quantity : ") If Quantity = "" Then Exit Sub If Quantity >= 0 And Quantity < 25 Then Discount = 0.1 ElseIf Quantity < 50 Then Discount = 0.15 ElseIf Quantity < 75 Then Discount = 0.2 Else Discount = 0.25 End If MsgBox "Discount : " & Discount End Sub |
※ IIF함수
IIF(조건,참일때 실행문, 거짓일때 사용문)
엑셀 Worksheet IF함수 구현
MsgBox ( n = 0, 0, 1/n)
■ Select Case문
세개 이상의 조건 중에 하나를 선택하는 경우 사용
### True 인 Case를 만나면 실행문을 수행하고 바로 Select Case문을 빠져나온다. 그러므로 가능성이 큰 Case를 코드 앞부분에 두는게 효율적이다.
Select Case 판단대상 Case 판단할 값1 값1일때 실행할 코드 Case 판단할 값2 값2일 때 실행할 코드 Case Else 그외의 경우 실행할 코드 End Select |
※ 판단 대상 : 수식, 변수 ※ 판단할 값이 여러개면 쉼표( , )로 구분 Case 7, 8 실행문1 Case 9,10 실행문2 |
Sub Discout() Dim Quantity As Variant Dim Discount As Double Quantity = InputBox("Enter Quantity : ") Select Case Quantity Case "" Exit Sub Case Is < 25 Discount = 0.1 Case 25 To 49 Discount = 0.15 Case 50 To 74 Discount = 0.2 Case Else Discount = 0.25 End Select MsgBox "Discount : " & Discount End Sub |
Sub SelectionType() ' 선택영역의 타입 출력 Select Case TypeName(Selection) Case "Range" Select Case Selection.Count Case 1 MsgBox "One call is selected" Case Else MsgBox Selection.Rows.Count & "rows" End Select Case "Nothing" MsgBox "Nothing is selected" Case Else MsgBox "Sonething other than a range" End Select End Sub |
■ For ~Next문
For Each 요소 In 컬렉션 문
For Counter변수 = 시작 To 끝 [ Step StepVal ] 실행문 [ Exit For ] Next [ Counter변수] |
|
Sub DeleteRow() ' 10행~2행 까지 짝수행 삭제 Dim RowNum As Long For RowNum = 10 To 2 Step -2 'Step이 음수(감소) Rows(RowNum).Delete Next End Sub |
Sub DeleteRow() ' 세로방향으로 1 ~100 숫자 채우기 Dim StartVal As Integer Dim NumToFill As Integer Dim cnt As Integer StartVal = 1 NumToFill = 100 For cnt = 0 To NumToFill - 1 ActiveCell.Offset(cnt, 0).Value = StartVal + cnt Next End Sub |
■ Do ~ Loop문
Do While ~ Loop문, Do ~ While Loop문 : 조건이 True인 동안 실행문 실행
Do Until ~ Loop문, Do ~ Until Loop문 : 조건이 True일 때 까지 실행문 실행
Do [ While 조건 ] 실행문 [ Exit Do ] Loop |
Do 실행문 [ Exit Do ] Loop [ While 조건 ] |
Sub DateFill() '[A1]셀부터 이달의 말까지 채우기 Dim TheDate As Date TheDate = Date [a1].Activate Do While Month(Date) = Month(TheDate) Selection.Value = TheDate TheDate = TheDate + 1 ActiveCell.Offset(1, 0).Activate Loop End Sub |
Do [ Until 조건 ] 실행문 [ Exit Do ] Loop |
Do 실행문 [ Exit Do ] Loop [ Until 조건 ] |
Sub FileReadWrite() ' 줄단위 읽어 [A1]부터 세로 방향으로 쓰기 Dim LineCnt As Long Dim LineOfText As String Open "C:\Users\TaeIk\Documents\test.txt" For Input As #1 LineCnt = 0 Do While Not EOF(1) Line Input #1, LineOfText [A1].Offset(LineCnt, 0) = LineOfText LineCnt = LineCnt + 1 Loop Close #1 End Sub |
※ While ~ Wend문 = Do While ~ Loop문
'VBA' 카테고리의 다른 글
[Excel][VBA] 텍스트 파일 조작하기 (0) | 2021.11.22 |
---|---|
[Excel][VBA] 특정셀 찾기 (0) | 2021.11.22 |
[Excel][VBA] 입출력 함수 (0) | 2021.11.22 |
[Excel][VBA] VBA 내장 함수 / 워크시트 함수 (0) | 2021.11.21 |
[Excel][VBA] VBA 프로그래밍 다지기 (0) | 2021.11.21 |
- Total
- Today
- Yesterday
- Application.InputBox
- Option Compare Text
- for each
- 강제 재계산
- 배열
- 적용 범위
- 프로시저 호출
- 함수 프로시저
- inputbox
- 함수 재계산
- EnableCancelKey
- 워크시트 함수 재계산
- 차트 레이블 추가
- function함수 예외
- Function Procesure
- Screenupdating
- 참조
- 사용자 정의 함수 재계산
- 프로시저 작성 실전
- comment.text
- bubble sort
- 원본 데이터
- ProtectStructure
- WorkSheet Sort
- vba
- 개체
- 차트 서식변경
- 사용자 정의 함수
- Excel
- 사용자 정의 함수 사용 예
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |