2021 컴퓨터활용능력 1급 실기 1권 스프레드시트 실무
p.252쪽 문제2번에 3번 문제
<고객관리>폼의 고객명(txt고객명)에 조회할 '고객명'을 입력하고 '고객조회(cmb고객조회)' 단추를 클릭하면 워크시트의 표1에서 해당 데이터를 찾아
각각의 컨트롤에 표시하고 해당 고객의 정보가 없는 경우에는 "조건에 일치하는 자료가 없습니다"라는 메시지 박스가 표시되도록 프로시저를 작성하시오(for each ~ next문 사용)
a = Range("d3").Row + Range("d3").CurrentRegion.Rows.Count - 1
txt고객명.Value = Cells(a, 4)
txt고객등급.Value = Cells(a, 5)
txt매출금액.Value = Cells(a, 6)
txt결제방식.Value = Cells(a, 7)
MsgBox "조건에 일치하는 자료가 없습니다."
저는 우선 이렇게 풀고, 고객명을 어떻게 해야할지 몰라서 해설을 봤는데 잘 모르겠어요
QR코드로 섹션18 프로시저를 인강 들었을때는 이해가 되었는데, 갑자기 for each 구문으로 나오니 이해가 안되어서 문의드립니다.
해설에는
스위치=0
참조행=3
For Each aa in range("d4:d7")
참조행=참조행+1
if aa.value=txt고객명.value then
등등
스위치는 무엇을 나타내는지, 참조행=참조행+1이 왜 되는지
밑에 해설에 스위치가 =1이 무엇인지 이해가 안되어서 문의드립니다.
P.254 문제4번에 2번 문제도 문의드립니다.
Private Sub cmd입력_Click()
a = Range("a3").Row + Range("a3").CurrentRegion.Rows.Count
b = lst과목.ListIndex + 10
Cells(a, 1) = UCase(txtID.Value)
Cells(a, 2) = txt이름.Value
Cells(a, 3) = Cells(b, 8)
Cells(a, 4) = Cells(b, 9)
Cells(a, 5) = Cells(b, 10)
Cells(a, 6) = Cells(b, 11) - (Cells(b, 11) * 0.1)
txtID.Value = ""
txt날짜.Value = ""
txt이름.Value = ""
lst과목.Value = ""
End Sub
해당문제에 이렇게 작성했는데,
▶list와 listindex를 사용을 언제해야하는지, 어떻게 사용하는 방법
▶ 목록상자에서 과목을 선택했을 때에만 폼의 데이터를 워크시트에 입력되도록 설정하는 방법
▶목록상자에서 과목을 선택하지 않았으면 ID 컨트롤에 선택안함을 표시한 후 목록상자의 첫번째 항목을 선택하는 방법
3개가 어떻게 언제, 어떤식으로 사용해야할지 잘 이해가 안되는데 알려주시면 감사하겠습니다.
1. 스위치변수는 임의로 변수 이름을 지정한 것입니다.
스위치변수를 이용한 이유는 txt고객명에 입력한 값과 동일한 데이터가 있었는지를 파악하기 위해 넣은 것입니다.
스위치변수의 초기값으로 0을 넣고, txt고객명과 같은지 비교하는 if문 안에 스위치=1을 넣었습니다.
그런 다음 for each문 밖에서 스위치 변수를 비교합니다.
스위치 변수가 초기값 그대로 0 이면 txt고객명과 같은 데이터가 없다는 의미가 되고,
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미가 됩니다.
스위치 변수는 on/off의 개념으로 1과 0을 사용한 것이데요, 다른 숫자를 사용하셔도 상관은 없습니다.
비슷한 유형의 문제가 나오면 스위치는 이런 식으로 사용하셔도 됩니다. 물론, 문제 조건에 따라 변경될 수 있습니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.
첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.
시험에서는 제시된 문제에 따라 초기값이 달라질 수 있습니다.
aa도 변수명입니다.
워크시트의 값을 조회하는 문제이므로 데이터가 들어간 표1의 [D4:D7] 영역 동안 검색을 하면 됩니다.
스위치=1은 앞서 설명드렸듯이
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미하므로 for문을 빠져나옵니다.
2. 문제에서 list, listindex 를 사용하라는 지시사항이 있을 때 해당 부분을 사용하게 됩니다.
list와 listindex의 예를 들어 말씀드리겠습니다.
ListIndex는 보통 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하거나 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
기본모의고사 4회의 ListIndex는 폼에 있는 데이터를 시트에 추가하는 문제로 목록상자(lst열차종류)에서 특정 행을 추출하여 시트에 추가합니다.
Cells(입력행, 2) = lst열차종류.List(참조행, 0)
Cells(입력행, 3) = lst열차종류.List(참조행, 1)
'참조행 = lst열차종류.ListIndex' 라고 정의해 두고 lst열차종류.List(참조행, 0) 으로 사용하고 있습니다.
이것은 참조행이 어디인지 지정해 놓고 lst열차종류에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.
기본모의고사 3회의 ListIndex는 폼의 선택에 따라 시트의 셀 정보를 가지고와서 시트에 계산하는 문제로 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
이 문장에서는 cmb코드에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.
▶ 목록상자에서 과목을 선택했을 때에만 폼의 데이터를 워크시트에 입력되도록 설정하는 방법
▶목록상자에서 과목을 선택하지 않았으면 ID 컨트롤에 선택안함을 표시한 후 목록상자의 첫번째 항목을 선택하는 방법
두 부분은 if 문을 이용하여 과목의 내용이 선택되었는지 확인 하여 사용하면 됩니다.
좋은 하루 되세요.
-
관리자2021-10-15 10:28:41
1. 스위치변수는 임의로 변수 이름을 지정한 것입니다.
스위치변수를 이용한 이유는 txt고객명에 입력한 값과 동일한 데이터가 있었는지를 파악하기 위해 넣은 것입니다.
스위치변수의 초기값으로 0을 넣고, txt고객명과 같은지 비교하는 if문 안에 스위치=1을 넣었습니다.
그런 다음 for each문 밖에서 스위치 변수를 비교합니다.스위치 변수가 초기값 그대로 0 이면 txt고객명과 같은 데이터가 없다는 의미가 되고,
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미가 됩니다.스위치 변수는 on/off의 개념으로 1과 0을 사용한 것이데요, 다른 숫자를 사용하셔도 상관은 없습니다.
비슷한 유형의 문제가 나오면 스위치는 이런 식으로 사용하셔도 됩니다. 물론, 문제 조건에 따라 변경될 수 있습니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.시험에서는 제시된 문제에 따라 초기값이 달라질 수 있습니다.
aa도 변수명입니다.
워크시트의 값을 조회하는 문제이므로 데이터가 들어간 표1의 [D4:D7] 영역 동안 검색을 하면 됩니다.
스위치=1은 앞서 설명드렸듯이
스위치 변수 값이 1로 변경되었다면 txt고객명과 같은 데이터가 있다는 의미하므로 for문을 빠져나옵니다.2. 문제에서 list, listindex 를 사용하라는 지시사항이 있을 때 해당 부분을 사용하게 됩니다.
list와 listindex의 예를 들어 말씀드리겠습니다.
ListIndex는 보통 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하거나 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
기본모의고사 4회의 ListIndex는 폼에 있는 데이터를 시트에 추가하는 문제로 목록상자(lst열차종류)에서 특정 행을 추출하여 시트에 추가합니다.Cells(입력행, 2) = lst열차종류.List(참조행, 0)
Cells(입력행, 3) = lst열차종류.List(참조행, 1)'참조행 = lst열차종류.ListIndex' 라고 정의해 두고 lst열차종류.List(참조행, 0) 으로 사용하고 있습니다.
이것은 참조행이 어디인지 지정해 놓고 lst열차종류에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.
기본모의고사 3회의 ListIndex는 폼의 선택에 따라 시트의 셀 정보를 가지고와서 시트에 계산하는 문제로 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
이 문장에서는 cmb코드에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.▶ 목록상자에서 과목을 선택했을 때에만 폼의 데이터를 워크시트에 입력되도록 설정하는 방법
▶목록상자에서 과목을 선택하지 않았으면 ID 컨트롤에 선택안함을 표시한 후 목록상자의 첫번째 항목을 선택하는 방법
두 부분은 if 문을 이용하여 과목의 내용이 선택되었는지 확인 하여 사용하면 됩니다.
좋은 하루 되세요.