<입력>버튼 클릭 프로시저
Private Sub cmb 입력_Click()
참조행=cmb종목.Listindex + 4
참조표에서 실제 데이터가 입력되어 있는 행은 워크시트의 4행 (스쿼시) 이므로 cmb종목 콤보상자에서 선택한 목록값에 대한 listindex에 4를 더한 건가요? 콤보상자가 그 폼에서 선택 할 수 있는 상자 말하는거죠?
콤보상자의 상대적인 위치는 0부터 시작하므로 첫번째 항목을 선택하면 cmb종목.listindex는 참조행에 0을 치환하니까 첫번째 항목을 선택하면 0+4 해서 네 번째에 있는 스쿼시가 선택된다는거죠?'ㅁ'??
입력행=[b3].Row + [b3].CurrentRegion.Rows.Count
입력행 = 기준행위치 + 기준범위행수 (240p 여기보세요 참고) 라고 되어 있는데요
기준행위치가 233P 기본문제에서는 판매날짜가 쓰여진 [b3]이었던 걸 참고해보면 369p에서도 고객번호가
쓰여진 [a3]이어야 되는거 아닌가요?
입력행 = 기준행위치 + 기준범위행수니까
[a3].Row + [a3].CurrentRegion.Rows.Count
= 3행이니까 3 치환 + [a3]셀과 연결된 범위의 행수 3 = 6 아닌가요?
아니면 248P의 문제4에 대한 해설 252P를 보면 코드설명의 2번에 '입력행'의 기준으로 제목행이 있는 [a1]셀을 지정한다고 되어있는데요. 그럼 369p에서도 스포츠센터 이용 요금이라고 쓰여있는 맨 첫번째 행 [a1]으로 해야하는거 아닌가요?
이 부분도 조금 헷갈리는게 241P에서[b3].CurrentRegion.Rows.Count 이 부분에 대한 설명에서요.
b3셀 밑에 2017-01-13,2017-01-18,2017-01-20 이렇게 세 가지 행이 있기 때문에 값이 3이 되는거 아닌가요?
근데 필드명만 있고 데이터가 기록되어 있지 않을때 0이 아니라 1인거면 필드명부터 1을 쳐서 4인가요??ㅠㅠㅠㅠ
Cells(입력행,1) = val(txt고객번호)
cells(입력행,2) = cmb성별
cells(입력행,3) = cmb종목
cells(입력행,4) = val(txt사용시간)
cells(입력행,5) = Format(Cells(입력행,4) * cells(참조행,9), ("#,###")
End Sub
앞에 코드 설명부분 참고해가면서 잘 모르겠네요ㅠㅠㅠ
1.
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박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
.png)
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

2.
엑셀에서 연속된 자료가 있는 곳을 하나의 표로 봅니다.
아래 그림에서는 고객번호 필드명 부터 연결 되어 있기때문에 여기부터 하나의 표로 봅니다. 그래서 [a3]이 되는 것이구요.

아래그림은 [표1]부터 연속적으로 표시되고 있기 때문에 [b1]이 됩니다.

이렇게 데이터가 처음 시작하는 부분을 위치로 잡으시면 됩니다.
a,b 등열은 상관이 없구요. 행만 정확하다면 정확한 결과가 나오므로 행이 정확한지 확인 하셔서 다시 작성해 보세요.
좋은 하루 되세요.
-
*2018-02-09 13:14:39
1.
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.countcells(입력행, 1) = txt번호
cells(입력행, 2) = cells(참조행, 8)
cells(입력행, 3) = cells(참조행, 9)
cells(입력행, 4) = txt매수
cells(입력행, 5) = txt매수 * cells(참조행, 10)이 문장에서는 lst열차종류에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.
한마디로 말하면.. 첫번째 코드는 폼안의 list박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
.png)
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.
2.
엑셀에서 연속된 자료가 있는 곳을 하나의 표로 봅니다.
아래 그림에서는 고객번호 필드명 부터 연결 되어 있기때문에 여기부터 하나의 표로 봅니다. 그래서 [a3]이 되는 것이구요.

아래그림은 [표1]부터 연속적으로 표시되고 있기 때문에 [b1]이 됩니다.
이렇게 데이터가 처음 시작하는 부분을 위치로 잡으시면 됩니다.
a,b 등열은 상관이 없구요. 행만 정확하다면 정확한 결과가 나오므로 행이 정확한지 확인 하셔서 다시 작성해 보세요.
좋은 하루 되세요.