책 내용 질문하기
For each~next문과 참조행에 관하여 질문드립니다.
도서
2018 시나공 기출문제집 컴퓨터활용능력 1급 실기
페이지
145
조회수
66
작성일
2018-09-13
작성자
탈퇴*원
첨부파일

엑셀 5회 기출(132~137쪽)에서 '참조행'이 잘 이해가 되지 않습니다.

for each~next 문을 이용하여 프로시저를 작성하는 문제인데요.

Private Sub cmd조회_Click()

스위치 = 0
참조행 = 3

For Each aa In Range("b4:b25")

참조행 = 참조행 + 1

If aa.Value = txt사원번호 Then

txt사원번호 = Format(Cells(참조행, 2), ">&&&&&")
txt성명 = Cells(참조행, 3)
txt부서명 = Cells(참조행, 4)

txt직위 = Cells(참조행, 5)
txt신청일 = Cells(참조행, 6)

txt총점 = Cells(참조행, 7)

스위치 = 1

Exit For

End If


Next

If 스위치 = 0 Then

MsgBox "사원번호가 잘못되었습니다."

End If

End Sub

1. 여기서 초반에 참조행을 '3'으로 초기화한 후,

참조행 = 참조행 + 1 이라고 하였는데,

이것이 참조행이 3부터 시작하여 3,4,5,6.... 순으로 인식(?)되기 때문에 +1을 한 것인가요?

실제로 참조해야 하는 행은 4행부터 이므로,

이것을 맞춰주기(?) 위해 +1을 한 것인가요?

2. 만약 그렇다면, 초반에 참조행을 0이나 1 등으로 초기화하고

For Each aa In Range("b4:b25")

참조행 = 참조행 + 4

혹은

For Each aa In Range("b4:b25")

참조행 = 참조행 + 3

라고 작성해도 괜찮을까요?? 실제로 시험해봤지만, 일치값을 제대로 찾지 못하던데....

(가령, '나1'을 검색했는데 '가1'이 조회되었습니다.)

3. 이것이 불가능한 이유는 무엇인가요?? (일치값을 제대로 찾지 못하는 이유)

for each~next 구문에서의 참조행의 원리가 확실하게 이해되지 않습니다. listindex는 이해가 되는데...

이상입니다.

답변해주신다면 감사하겠습니다.

답변
2018-09-13 20:51:19

안녕하세요.


1.
'참조행' 변수는 '참조행 = 참조행+1'과 같이 1씩 증가하는 변수로 데이터의 행을 가리킵니다.

초기값이 3이므로 3행부터 차례로 4행, 5행....으로 변하는 것이지요.


2. 3.
이 때, For문이 [B4] 부터 [B25]까지 반복되는 동안 참조행이 1씩 증가합니다.

참조행 = 참조행 + 4로 코드를 넣으면 4씩 증가하기 때문에 데이터의 행을 건너뛰어 가리키게 됩니다.

그래서 정확한 결과가 나타나지 않는 것입니다.

For 문은 반복해서 같은 명령어들을 동작시킬 때 유용하게 사용됩니다.
좀 복잡해 보이지만 차근차근 생각해 보시면 이해하실 수 있을 것 같습니다.

For Each aa In Range("b4:b25") : aa에 [B4]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
aa에 [B5]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
aa에 [B6]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
.
.
.
aa에 [B25]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
For 문으로 이동했다가 범위 밖인 것을 확인하고 Next 다음 문장을 실행하러 제어가 움직입니다.

좋은 하루 보내세요.

  • *
    2018-09-13 20:51:19

    안녕하세요.


    1.
    '참조행' 변수는 '참조행 = 참조행+1'과 같이 1씩 증가하는 변수로 데이터의 행을 가리킵니다.

    초기값이 3이므로 3행부터 차례로 4행, 5행....으로 변하는 것이지요.


    2. 3.
    이 때, For문이 [B4] 부터 [B25]까지 반복되는 동안 참조행이 1씩 증가합니다.

    참조행 = 참조행 + 4로 코드를 넣으면 4씩 증가하기 때문에 데이터의 행을 건너뛰어 가리키게 됩니다.

    그래서 정확한 결과가 나타나지 않는 것입니다.

    For 문은 반복해서 같은 명령어들을 동작시킬 때 유용하게 사용됩니다.
    좀 복잡해 보이지만 차근차근 생각해 보시면 이해하실 수 있을 것 같습니다.

    For Each aa In Range("b4:b25") : aa에 [B4]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
    aa에 [B5]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
    aa에 [B6]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
    .
    .
    .
    aa에 [B25]의 값을 넣습니다. Next를 만날 때까지 수행하다가 Next를 만나면
    For 문으로 이동했다가 범위 밖인 것을 확인하고 Next 다음 문장을 실행하러 제어가 움직입니다.

    좋은 하루 보내세요.

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