책 내용 질문하기
엑셀 프로시저 질문있습니다
도서
2017 시나공 컴퓨터활용능력 1급 실기(엑셀,액세스 2007사용자용)
페이지
233
조회수
190
작성일
2016-12-16
작성자
첨부파일

정답설명

Private Sub cmd고객조회_Click()
스위치 = 0 >>>> '스위치'가 무엇인지 알려주세요 '변수를 0으로 초기화 한다'는 의미도 모르겠습니다
참조행 = 3
For Each aa In Range("d4:d7")
참조행 = 참조행 + 1 >>>> 위에 참조행=3 지정하면 3=3+1 이런식으로 되지 않나요??
If aa.Value = txt고객명 Then >>>> aa. value 뭔지 모르겠습니다. 갑자기 어디서 나온건가요???
txt고객등급 = Cells(참조행, 5)
txt매출금액 = Cells(참조행, 6)
txt결제방식 = Cells(참조행, 7)
스위치 = 1 >>>> 스위치=1 의미도 모르겠습니다.
Exit For
End If
Next
If 스위치 = 0 Then
MsgBox "조건에 일치하는 자료가 없습니다."
End If
End Sub

질문하고 싶은 내용 총 4가지 입니다. 글씨색깔을 조정하여서 물어보았습니다.

제가 완전 초짜라 설명 가능하면 쉽게 부탁드립니다. 감사합니다 ㅎㅎ

p.s 책 p.232에 select case에서 질문 하나 더 있습니다

Select Case Cells(입력행, 6)
Case Is <= 59
Cells(입력행, 7) = "가"
Case Is <= 69
Cells(입력행, 7) = "양"
Case Is <= 79
Cells(입력행, 7) = "미"
Case Is <= 89
Cells(입력행, 7) = "우"
Case Else
Cells(입력행, 7) = "수"
End Select

여기에서 오름차순으로 만 입력해야 값이 나오는건가요????

답변 기다리고있겠습니다 ㅎㅎ

그리고 한해 마무리 잘 하시고 감기조심하세요 ㅎㅎㅎ~~~~~~ 감사합니다.

답변
2016-12-20 13:23:39

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씩 증가하게 되는 것입니다.

2. 반대로 작성하셔서 정확한 결과가 나온다면 정답으로 인정 됩니다.

좋은 하루 되세요.

  • *
    2016-12-20 13:23:39

    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씩 증가하게 되는 것입니다.

    2. 반대로 작성하셔서 정확한 결과가 나온다면 정답으로 인정 됩니다.

    좋은 하루 되세요.

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