책 내용 질문하기
기타작업 2 프로시저 관련 질문입니다.
도서
2018 시나공 기출문제집 컴퓨터활용능력 1급 실기
페이지
136
조회수
38
작성일
2018-07-20
작성자
탈퇴*원

교제 136페이지 2-2번의 문제를 보니까 for each~next문을 이용하라고 되어 있고 풀이를 보니까 스위치랑 참조행을 설정하던데 이 세가지가 어떤 개념인지 모르겠어요. 특히 for each~next문이 뭔지 모르겠어요

이 for each~next문의 개념과 활용법과 스위치, 참조행과 연관성을 알고싶습니다.

답변
2018-07-25 13:57:10

- 스위치 : 스위치는 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 '이 되는 것입니다.

좋은 하루 되세요.

  • *
    2018-07-25 13:57:10

    - 스위치 : 스위치는 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, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.