책 내용 질문하기
엑셀에서 폼을 통한 데이터 추가 프로시저
도서
2018 시나공 컴퓨터활용능력 1급 실기(엑셀, 액세스 2010 사용자용)
페이지
196
조회수
73
작성일
2018-04-18
작성자
탈퇴*원
첨부파일

컴활 실기 1급 부록 p191에 나오는 문제입니다.

펜션예약이라는 폼을 통해 시트의 표 마지막 행 다음에 연속하여

데이터를 추가하는 프로시저입니다.

아래는 제가 작성한 코드입니다.

Private Sub cmd예약_Click()
입력행 = [b3].Row + [b3].CurrentRegion.Rows.Count
Cells(입력행, 3) = txt예약자
Cells(입력행, 4) = txt전화번호
Cells(입력행, 5) = lst방이름.Column(0)
Cells(입력행, 6) = txt날짜
If opt1박 = True Then
Cells(입력행, 7) = "1박"
Cells(입력행, 8) = lst방이름.Column(1)
Else
Cells(입력행, 7) = "2박"
Cells(입력행, 8) = lst방이름.Column(1) * 2
End If
End Sub

그리고 아래는 해설에 나오는 정답 코드입니다.

Private Sub cmd예약_Click()
입력행 = [b3].Row + [b3].CurrentRegion.Rows.Count
참조행 = lst방이름.ListIndex + 5
Cells(입력행, 2) = 입력행 - 4
Cells(입력행, 3) = txt예약자
Cells(입력행, 4) = txt전화번호
Cells(입력행, 5) = Cells(참조행, 10)
Cells(입력행, 6) = txt날짜
If opt1박 = True Then
Cells(입력행, 7) = "1박"
Cells(입력행, 8) = Cells(참조행, 11) * 1
Else
Cells(입력행, 7) = "2박"
Cells(입력행, 8) = Cells(참조행, 11) * 2
End If
End Sub

채점 프로그램상 제가 쓴 코드도 정답으로 인정되었는데

저는 정답 코드 상에서 참조행을 설정한 이유가 궁금합니다.

참조행은 어떤 역할을 하는지 궁금하고

워크시트 상에서 실제로 어디에 위치하는지 여쭙고 싶습니다.

Cells(참조행, 10)이 어디있는 건지 궁금해 그렇습니다.

그리고 가능하시다면 lst방이름.ListIndex에 5를 더한 이유도 무엇인지

여쭈어보고 싶습니다.

답변
2018-04-23 12:16:19

list 박스에 입력되어 있는 값을 이용하여 구해야 하므로

listindex 를 사용한 것입니다.

listindex 를 사용하는 문제는 엑셀 시트에 입력된 자료를 찾아 사용하는 것이고

list, listindex 문제는 리스트 박스에 입력된 내용을 사용하는 문제입니다.

문제에서 listindex 를 사용하라고 했는지, list,listindex 를 사용하라고 했는지 확인 하여 사용하시면 되세요.

아래 설명을 참고해 주세요.

listindex와 list,listindex의 차이점을 설명 드릴께요. 이렇게 이해하시는 것이 빠르실 거예요.

첫번째 코드는 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하고, 두번째 코드는 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.

참조행 = lst과목.ListIndex
입력행 = [a2].Row + [a2].CurrentRegion.Rows.Count
Cells(입력행, 1) = txtID
Cells(입력행, 2) = txt이름
Cells(입력행, 3) = lst과목.List(참조행, 0)
Cells(입력행, 4) = lst과목.List(참조행, 1)
Cells(입력행, 5) = lst과목.List(참조행, 2)
Cells(입력행, 6) = lst과목.List(참조행, 3) - (lst과목.List(참조행, 3) * txt할인율)

여기에서 참조행에 lst과목.listindex 라고 정의해 두고
lst과목.list(참조행,0) 으로 사용 하고 있습니다.

이것은 참조행이 어디인지 지정해 놓고 lst과목에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.

참조행 = lst열차종류.listindex + 4
입력행 = [a3].row + [a3].currentregion.rows.count

cells(입력행, 1) = txt번호
cells(입력행, 2) = cells(참조행, 8)
cells(입력행, 3) = cells(참조행, 9)
cells(입력행, 4) = txt매수
cells(입력행, 5) = txt매수 * cells(참조행, 10)

이 문장에서는 lst열차종류에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.

한마디로 말하면.. 첫번째 코드는 폼안의 list박스내의 자료를 찾아서 셀에 입력 하는 것이구요.




두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

  • *
    2018-04-23 12:16:19

    list 박스에 입력되어 있는 값을 이용하여 구해야 하므로

    listindex 를 사용한 것입니다.

    listindex 를 사용하는 문제는 엑셀 시트에 입력된 자료를 찾아 사용하는 것이고

    list, listindex 문제는 리스트 박스에 입력된 내용을 사용하는 문제입니다.

    문제에서 listindex 를 사용하라고 했는지, list,listindex 를 사용하라고 했는지 확인 하여 사용하시면 되세요.

    아래 설명을 참고해 주세요.

    listindex와 list,listindex의 차이점을 설명 드릴께요. 이렇게 이해하시는 것이 빠르실 거예요.

    첫번째 코드는 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하고, 두번째 코드는 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.

    참조행 = lst과목.ListIndex
    입력행 = [a2].Row + [a2].CurrentRegion.Rows.Count
    Cells(입력행, 1) = txtID
    Cells(입력행, 2) = txt이름
    Cells(입력행, 3) = lst과목.List(참조행, 0)
    Cells(입력행, 4) = lst과목.List(참조행, 1)
    Cells(입력행, 5) = lst과목.List(참조행, 2)
    Cells(입력행, 6) = lst과목.List(참조행, 3) - (lst과목.List(참조행, 3) * txt할인율)

    여기에서 참조행에 lst과목.listindex 라고 정의해 두고
    lst과목.list(참조행,0) 으로 사용 하고 있습니다.

    이것은 참조행이 어디인지 지정해 놓고 lst과목에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.

    참조행 = lst열차종류.listindex + 4
    입력행 = [a3].row + [a3].currentregion.rows.count

    cells(입력행, 1) = txt번호
    cells(입력행, 2) = cells(참조행, 8)
    cells(입력행, 3) = cells(참조행, 9)
    cells(입력행, 4) = txt매수
    cells(입력행, 5) = txt매수 * cells(참조행, 10)

    이 문장에서는 lst열차종류에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.

    한마디로 말하면.. 첫번째 코드는 폼안의 list박스내의 자료를 찾아서 셀에 입력 하는 것이구요.




    두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

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