책 내용 질문하기
프로시저 - 문제 2
도서
2019 시나공 컴퓨터활용능력 1급 실기
페이지
247
조회수
151
작성일
2019-11-06
작성자
탈퇴*원
첨부파일

스위치 = 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를 사용하지 않는 경우도 있나요?

  

 

 


 

    

답변
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. 조건에 만족하지 않는 경우 실행되어야 할 내용이 없다면 사용하지 않습니다.

 

 

오늘도 좋은 하루 보내세요. 

  • 관리자
    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. 조건에 만족하지 않는 경우 실행되어야 할 내용이 없다면 사용하지 않습니다.

     

     

    오늘도 좋은 하루 보내세요. 

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.