문제 풀이를 보면 갑자기 참조행이 나오더라고요
앞에 문제에서는 입력행을 썼었는데
230p 문제 2번에서는 참조행을 사용하니까 혼란스럽더라고요
입력행과 참조행의 차이가 무엇인지 알려주세요..
그리고 233p 풀이과정에서 풀이 1번에 스위치 = 0 이라는 식을 쓰던데
갑자기 스위치 = 0 이 왜 나온건지.. 어쩔 때 사용하는 건지 감이 도통 잡히지 않더라고요
또 풀이 9번에도 스위치 = 1 을 쓰던데 이것도 잘 모르겠어요
도대체 스위치가 뭔가요?? 왜 사용을 하는거죠??
입력행은 셀에 값을 입력할때 사용할 입력할 행을 구하는 것이라고 보시면 되구요.
참조행은 참조하여 사용할 행을 뜻하는 것이라 보면 됩니다.
다른 표가 주어지고
폼의 콤보상자나 리스트상자의 값을 이용하여야 할때는
참조행을 사용한다고 보시면 됩니다.
스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
- aa 는 변수명으로 다른 것으로 지정하셔도 상관 없습니다. 임의로 지정한 것이 맞습니다.
- 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원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.
-exit for를 If ~ End if 사이에 넣는 것은 if 문의 조건을 만족할 때만 For문을 빠져나가라는 것입니다. 그런데 exit for를 End if 다음에 입력하면 if 문의 조건과는 상관없이 for문을 처음 실행했을 때 무조건 for 문을 빠져나게 되므로 정상적으로 실행이 안되는 것입니다.
참조행 = 참조행 + 1
고객명을 입력한 후 [고객조회] 버튼을 클릭하면 d4:d7 범위에서 동일한 고객명을 찾습니다.
해당 고객명을 찾았을 경우 그 고객에 대한 고객등급, 매출금액, 결제방식 등을 폼에 표시해야 합니다.
참조행은 해당 고객명과 같은 행에 있는 고객등급, 매출금액, 결제방식을 폼에 표시하기 위해 사용하는 것입니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.
첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.
좋은 하루 되세요.
-
*2015-05-18 16:04:37
입력행은 셀에 값을 입력할때 사용할 입력할 행을 구하는 것이라고 보시면 되구요.
참조행은 참조하여 사용할 행을 뜻하는 것이라 보면 됩니다.
다른 표가 주어지고
폼의 콤보상자나 리스트상자의 값을 이용하여야 할때는
참조행을 사용한다고 보시면 됩니다.
스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
- aa 는 변수명으로 다른 것으로 지정하셔도 상관 없습니다. 임의로 지정한 것이 맞습니다.
- 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원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.
-exit for를 If ~ End if 사이에 넣는 것은 if 문의 조건을 만족할 때만 For문을 빠져나가라는 것입니다. 그런데 exit for를 End if 다음에 입력하면 if 문의 조건과는 상관없이 for문을 처음 실행했을 때 무조건 for 문을 빠져나게 되므로 정상적으로 실행이 안되는 것입니다.
참조행 = 참조행 + 1
고객명을 입력한 후 [고객조회] 버튼을 클릭하면 d4:d7 범위에서 동일한 고객명을 찾습니다.
해당 고객명을 찾았을 경우 그 고객에 대한 고객등급, 매출금액, 결제방식 등을 폼에 표시해야 합니다.
참조행은 해당 고객명과 같은 행에 있는 고객등급, 매출금액, 결제방식을 폼에 표시하기 위해 사용하는 것입니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.
첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.
좋은 하루 되세요.