책 내용 질문하기
2011년 3회 1급 E형 엑셀
도서
[2012] 컴퓨터활용능력 1급 실기(엑셀, 액세스 2007 사용자용)
페이지
조회수
141
작성일
2012-08-27
작성자
첨부파일

문제 4-2번에서요 2번에 해당하는 답이 아래와 같은데요

스위치 = 0
참조행 = 0

For Each aa In Range("b4:b19")
참조행 = 참조행 + 1
If aa.Value = txt원아명 Then
lst원아정보.RowSource = "b" & 참조행 + 3 & ":h" & 참조행 + 3
스위치 = 1
Exit For
End If
Next
If 스위치 = 0 Then
MsgBox "조건에 일치하는 자료가 없습니다."
End If

여기서 스위치가 뭘 의미하고 , 참조행은 왜 0이며 FOR EACH~NEXT문이 언제 쓰이는 것이며, IF AA.VALUE=TXT원아명이 무슨 의미이며 lst원아정보.RowSource 가 왜 "b" & 참조행 + 3 & ":h" & 참조행 + 3 이것인지 모르겠습니다. 자세히 알려주세요. 해설에도 나와있지 않습니다. 이해가 안갑니다.

답변
2012-08-29 09:53:34

안녕하세요.

- 스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
- 참조행 : 참조행은 b4:b19 영역에서 TXT원아명에 입력한 원아가 몇번째에 있는지를 구하는 것입니다. b4:b19 영역의 첫번째 부터 비교를 하려면 참조행의 초기화 값은 1이여야 맞습니다. 하지만 IF 문으로 값을 비교하기 전에 '참조행 = 참조행 + 1'를 수행하게 되므로 이것을 수행했을 때 참조행의 값이 1이 되게 하기 위해 처음에 초기화 값으로 0을 지정하는 것입니다.

- FOR EACH~NEXT : 컬렉션에 포함된 개체의 수만큼 명령 코드를 반복 실행하는 명령문입니다. For Each aa In Range("b4:b19") 이렇게 작성하면 b4:b19 영역의 개체 수 즉, 셀의 수인 16번을 반복 수행하게 되는 것입니다.

- IF AA.VALUE=TXT원아명 : 앞에 For Each aa In Range("b4:b19")에서 b4:b19 영역의 각 셀의 값이 하나씩 aa 변수에 저장이 됩니다. 그랬을 때 현재 aa 변수에 들어 있는 값(value)이 txt원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.

- lst원아정보.RowSource = "b" & 참조행 + 3 & ":h" & 참조행 + 3 : b4:b19 영역에서 txt원아명에 입력된 원아가 있는지 비교하여 있으면 해당 원아의 데이터를 lst원아정보 목록 상자에 표시해야 합니다. 예를들어 첫번째 영역에 있는 '장명수'를 예를 들자면 '장명수'의 데이터를 lst원아정보 목록 상자에 표시하지면 lst원아정보.RowSource = b4:h4로 지정해야 합니다. 참조행 변수를 이용하자면 '장명수'는 b4:b19 영역의 첫번째에 있으므로 참조행 변수에는 1이 들어 있죠? 참조행은 1인데, 워크시트에 실제 입력되어 있는 위치는 4행이므로 참조행+3을 하여 4를 만든 것입니다. b4:h4를 참조행 변수를 이용하여 작성하면 '"b" & 참조행 + 3 & ":h" & 참조행 + 3 '이 되는 것입니다.

즐거운 하루 되세요.

"
  • *
    2012-08-29 09:53:34

    안녕하세요.

    - 스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
    - 참조행 : 참조행은 b4:b19 영역에서 TXT원아명에 입력한 원아가 몇번째에 있는지를 구하는 것입니다. b4:b19 영역의 첫번째 부터 비교를 하려면 참조행의 초기화 값은 1이여야 맞습니다. 하지만 IF 문으로 값을 비교하기 전에 '참조행 = 참조행 + 1'를 수행하게 되므로 이것을 수행했을 때 참조행의 값이 1이 되게 하기 위해 처음에 초기화 값으로 0을 지정하는 것입니다.

    - FOR EACH~NEXT : 컬렉션에 포함된 개체의 수만큼 명령 코드를 반복 실행하는 명령문입니다. For Each aa In Range("b4:b19") 이렇게 작성하면 b4:b19 영역의 개체 수 즉, 셀의 수인 16번을 반복 수행하게 되는 것입니다.

    - IF AA.VALUE=TXT원아명 : 앞에 For Each aa In Range("b4:b19")에서 b4:b19 영역의 각 셀의 값이 하나씩 aa 변수에 저장이 됩니다. 그랬을 때 현재 aa 변수에 들어 있는 값(value)이 txt원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.

    - lst원아정보.RowSource = "b" & 참조행 + 3 & ":h" & 참조행 + 3 : b4:b19 영역에서 txt원아명에 입력된 원아가 있는지 비교하여 있으면 해당 원아의 데이터를 lst원아정보 목록 상자에 표시해야 합니다. 예를들어 첫번째 영역에 있는 '장명수'를 예를 들자면 '장명수'의 데이터를 lst원아정보 목록 상자에 표시하지면 lst원아정보.RowSource = b4:h4로 지정해야 합니다. 참조행 변수를 이용하자면 '장명수'는 b4:b19 영역의 첫번째에 있으므로 참조행 변수에는 1이 들어 있죠? 참조행은 1인데, 워크시트에 실제 입력되어 있는 위치는 4행이므로 참조행+3을 하여 4를 만든 것입니다. b4:h4를 참조행 변수를 이용하여 작성하면 '"b" & 참조행 + 3 & ":h" & 참조행 + 3 '이 되는 것입니다.

    즐거운 하루 되세요.

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