스위치 = 0
참조행 = 3
For Each aa In Range("d4:d7")
참조행 = 참조행 + 1
If aa.Value = txt고객명 Then
txt고객등급 = Cells(참조행, 5)
txt매출금액 = Cells(참조행, 6)
txt결제방식 = Cells(참조행, 7)
스위치 = 1
Exit For
End If
Next
If 스위치 = 0 Then
MsgBox "조건에 일치하는 자료가 없습니다."
End If
1. 스위치 변수와 참조행 변수의 초기값을 맨 처음 입력하는 이유가 있나요?
이 문제에서 코드 작성 순서가 이해가 안갑니다.
2. For Each 안에 If문이 있는데, End If를 먼저 입력하고, Exit For을 입력해도 되나요?
3. For Each aa In Range("d4:d7")
참조행 = 참조행 + 1
If aa.Value = txt고객명 Then
txt고객등급 = Cells(참조행, 5)
txt매출금액 = Cells(참조행, 6)
txt결제방식 = Cells(참조행, 7)
스위치 = 1
Exit For
End If
그러니까 이 부분이 총 4번 반복되는 건가요?
고객명에 총 4명이 있어서?
4. 참조행 = 참조행 + 1
이 부분이 이해가 안갑니다.
이미 두 번째 줄에 참조행=3 이라고 써주었는데 왜 또 써준건가요?
그리고 참조행이 3이니까 +1을 해도 계속 4 아닌가요?
5. aa뒤에 Value를 쓰는 이유가 무엇인가요?
코드작성할 때 굳이 Value를 쓰지 않아도 암묵적으로 당연히 값을 비교하는 것 아니었나요?ㅠㅠ
6. For Each aa In Range("d4:d7")
참조행 = 참조행 + 1
If aa.Value = txt고객명 Then
txt고객등급 = Cells(참조행, 5)
txt매출금액 = Cells(참조행, 6)
txt결제방식 = Cells(참조행, 7)
스위치=1
이 구역을 스위치 1에 저장한다는 의미인가요?
그래서 For 구문을 나가기 전에 쓴건가요?
If문을 시작하기 전에 스위치=1을 쓰면 안되나요?
7. If문에서 값이 참일 경우에만 쓰고 end if를 하였는데,
Else를 사용하지 않는 경우도 있나요?
1.
스위치변수를 이용한 이유는 txt고객명에 입력한 값과 동일한 데이터가 있었는지를 파악하기
위해 넣은 것입니다.
스위치변수의 초기값으로 0을 넣고, txt고객명과 같은지 비교하는 if문 안에 스위치=1을 넣었습니다.
그런 다음 for each문 밖에서 스위치 변수를 비교합니다.
스위치 변수가 초기값 그대로 0 이면 txt고객명과 같은 데이터가 없다는 의미가 되고,
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미가 됩니다.
스위치 변수는 on/off의 개념으로 1과 0을 사용한 것이데요, 다른 숫자를 사용하셔도 상관은 없습니다.
2.
순서가 바뀌면 안됩니다.
if문의 조건이 만족하면
스위치 = 1로 만들고
Exit for로 for문을 빠져나와야 합니다.
Exit for문은 end if 전에 위치해야 논리적으로 맞습니다.
3. 네 맞습니다.
4. 6.
'참조행' 변수는 '참조행 = 참조행+1'과 같이 1씩 증가하는 변수로 데이터의 행을 가리킵니다. 초기값이 3이므로 3행부터 차례로 4행, 5행....으로 변하는 것이지요.
txt고객등급 = Cells(참조행, 5) 코드는 참조행이 4행일 경우, 4행 5열의 위치 데이터를 txt고객등급에 표시하라는 의미입니다.
For 문을 통해 [D4:D7]의 데이터를 변수 aa에 반복해서 넣게 되는데, 'txt고객명'이 변수 aa의 값과 같을 때 '스위치' 변수는 1로 유지됩니다. 'txt고객명'과 변수 aa의 값의 비교가 끝나면 '스위치' 변수가 0인지 if 문으로 비교하고 0이면 메시지 박스로 "조건에 일치하는 자료가 없습니다"를 출력합니다.
즉, '스위치' 변수는 1과 0의 값을 가질 수 있으며, 처리할 'txt고객명'이 있다면 1, 없다면 0을 반환합니다.
좀 복잡해 보이지만 차근차근 생각해 보시면 이해하실 수 있을 것 같습니다.
5.
value는 컨트롤에 들어있는 값을 의미하는 것입니다.
.value 없이 정상 실행된다면 생략하셔도 됩니다.
8. 조건에 만족하지 않는 경우 실행되어야 할 내용이 없다면 사용하지 않습니다.
오늘도 좋은 하루 보내세요.
-
관리자2019-11-07 20:51:05
1.
스위치변수를 이용한 이유는 txt고객명에 입력한 값과 동일한 데이터가 있었는지를 파악하기
위해 넣은 것입니다.
스위치변수의 초기값으로 0을 넣고, txt고객명과 같은지 비교하는 if문 안에 스위치=1을 넣었습니다.
그런 다음 for each문 밖에서 스위치 변수를 비교합니다.
스위치 변수가 초기값 그대로 0 이면 txt고객명과 같은 데이터가 없다는 의미가 되고,
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미가 됩니다.스위치 변수는 on/off의 개념으로 1과 0을 사용한 것이데요, 다른 숫자를 사용하셔도 상관은 없습니다.
2.
순서가 바뀌면 안됩니다.
if문의 조건이 만족하면
스위치 = 1로 만들고
Exit for로 for문을 빠져나와야 합니다.
Exit for문은 end if 전에 위치해야 논리적으로 맞습니다.
3. 네 맞습니다.
4. 6.
'참조행' 변수는 '참조행 = 참조행+1'과 같이 1씩 증가하는 변수로 데이터의 행을 가리킵니다. 초기값이 3이므로 3행부터 차례로 4행, 5행....으로 변하는 것이지요.
txt고객등급 = Cells(참조행, 5) 코드는 참조행이 4행일 경우, 4행 5열의 위치 데이터를 txt고객등급에 표시하라는 의미입니다.
For 문을 통해 [D4:D7]의 데이터를 변수 aa에 반복해서 넣게 되는데, 'txt고객명'이 변수 aa의 값과 같을 때 '스위치' 변수는 1로 유지됩니다. 'txt고객명'과 변수 aa의 값의 비교가 끝나면 '스위치' 변수가 0인지 if 문으로 비교하고 0이면 메시지 박스로 "조건에 일치하는 자료가 없습니다"를 출력합니다.
즉, '스위치' 변수는 1과 0의 값을 가질 수 있으며, 처리할 'txt고객명'이 있다면 1, 없다면 0을 반환합니다.좀 복잡해 보이지만 차근차근 생각해 보시면 이해하실 수 있을 것 같습니다.
5.
value는 컨트롤에 들어있는 값을 의미하는 것입니다.
.value 없이 정상 실행된다면 생략하셔도 됩니다.
8. 조건에 만족하지 않는 경우 실행되어야 할 내용이 없다면 사용하지 않습니다.
오늘도 좋은 하루 보내세요.