안녕하세요
엑셀 section18에서 p245, p256를 보시면요
각 페이지 문제3-2 코드입력에서 참조행,
문제4-2에서 참조행을 보면요
각 cmb종류.listindex + 7
lst과목.listindex
라고 되어 있는데요
1. cmb종류, lst과목 이런거 이름은 어케 아나요?
txt이름, cmb지점 이런거는 문제에 제시되어있는데 이런거는 어떻게 알 수 있는거죠?
2. l문제3에서 listindex +7 을 했는데
문제4에서도 실제 데이터가 10행부터 잇는데 왜 +10을 하지 않는거죠?
listindex에서 대해서 정확히 이해가 되지 않네요.
님 먼저 페이지 수를 써놓으셨는데 245,256p 가 아니라 245,246p 을 뜻하신거 같아
245,246p 이 두 페이지를 전제로 말씀드릴게요~!
먼저 245p 3-2 참조행의 listindex는요
앞에 cmb종류가 붙어있죠?
cmb종류.listindex 라는 말은 즉,
" '종류'라는 콤보상자를 열어보면 있는 '목록'이다~~' 라는 뜻이에요
listindex를 '목록'이라고 생각하세요!!!
그렇게보면 폼을 열어서 콤보상자를 눌러보면 있는 목록들....
이것들을 참조행으로 쓰겠다라는 뜻이에요
(참조행 = cmb종류.listindex 의 뜻이..ㅎㅎ)
그럼 참조행을 이걸로 하면..
cmb종류의 콤보상자의 목록들도 워크시트 내의 어디선가 따와서 만든 것일거잖아요?
예를들자면 cmb종류.Rowsource = "H7:H11"
h7에서 h11의 내용들로 cmb종류 콤보상자가 이루어져있단 뜻이죠..
그럼 cmb종류.ilstindex 의 의미가 " '종류' 콤보상자의 목록들" 이라고 했는데
실제 워크시트에서 이 목록들을 따온 장소는 h7부터 h11에 있잖아요!!!
그러므로 실제 워크시트에 이 내용들이 있는 위치를 더하기로 더해줘야 해요!
그래야 엑셀에서 제대로된 그 위치를 파악해서~~
월납부액, 납부총액, 이자총액을 구할 수 있어요~~
님이 이해하다 시피 실제 데이터가 7행부터 있기 때문에
그래서 cmb종류.listindex + 7 을 하는 것입니다~~
그.런.데!!! 왜왜 246의 listindex는 플러스를 하지 않는 것이냐??
246의 참조행 식을 보세요
lst과목.listindex 라고 되어 있죠.
lst과목 이 뭐냐하면요
cmb종류가 종류라는 콤보상자이듯이
lst과목은 과목 이라는 리스트(목록)을 뜻해요
cmb종류, lst과목 이런 이름 어떻게 아냐면요
일단 문제에 제시 되어 있어서 그대로 따르거나
어떤 문제는 저런거 안가르쳐 주는데요
그럴땐 비주얼베이직창 들어가서
일단 폼을 열구요
메뉴바 - 보기 - 속성창 들어가시면
창이 하나 뜨는데
폼의 버튼들을 하나하나 클릭해보면
그 창에 이름 이라는 부분에 걔 이름이 떠요 cmb종류, lst과목....
이렇게 알 수 잇어요~
아무튼 lst과목이란건 과목 박스 안에 뜨는 목록들을 의미해요...
온라인수강신청 폼을 살펴보시면 알겠지만
하얀바탕네모난 공간이 넓게 있죠? 여기가 lst과목 이에요
그런데 아마 컴퓨터 미리 lst과목.rowsource = " " 라는
lst과목안에 들어갈 내용들이 미리 만들어져 있을거에요
lst과목 안에는 워크시트의 목록이 뜬다는 말이죠....
위에서 cmb종류.rowsource 로 워크시트 내의 어떤 목록을 가져와서 콤보상자의 목록으로 만들었듯이..
lst과목 안에도 워크시트 내의 어떤 목록을 가져온 식이.. 이미 만들어져 있어요
그러므로
lst과목.listindex 라는 것은 이 자체로. lst과목 그 하얀바탕에 떠 있는 그 목록을 의미하는거에요!!
아까 cmb종류.listindex 는 종류만 그냥 콤보상자로 떴었지만.....
lst과목.listindex 는 과목이라는 상자 안에 해당 워크 시트의 내용들이 다 뜨게 되요!!
비주얼베이직창을 끄고 수강신청 버튼을 눌러보세
그럼 온라인수강신청 폼이 뜹니다.
과목코드, 과목명, 담당교수, 수강료....
그게 워크시트에도 그대로 있죠??
cmb종류.listindex는 표가 다 떠있는게 아니고.. '종류'라는 일부만 콤보상자로 되있었기 때문에.
올바른 워크시트로 찾아가기 위해 + 7 이라고 위치를 알려준거구요
lst과목.listindex는 이미 lst과목 안에 워크시트내의 표가 통째로 들어와 있어요.
어느 하나만 있는게 아니라, 과목코드 과목명 담당교수 수강료까지 통째로 다 있네요
그러니까 기준을 굳이 워크시트에 안둬도 된단 뜻이에요
워크시트를 보지말고 참조행을 그냥 lst과목에 있는 이 목록들로 이용해도 되기 때문에
굳이 워크시트 내의 위치를 표시할 필요가 없죠
그러므로 lst과목.listindex는 '그냥 lst과목 에 떠 있는 이 표들을 이용할게요~~~' 라는 의미를 가진 것입니다
그러고나서 다시 프로시저 열어서 보시면.. (또는 246 프로시저 식들을 보시면)
cells(입력행,4)=lst과목.list(참조행,1) 이라고 되어 있는데
저기서 list는 말그대로 목록 이고요
lst과목 이라는 네모박스안의 목록 이란 의미에요
그 뒤의 (참조행,1)은
'위치는 참조행 이구요, 열은 1번째 열을 가져오세요" 라는 의미입니다..
lst과목 에 떠 있는 목록들을 보시면 과목코드, 과목명, 담당교수, 수강료 가 떠있는데
listindex , list를 이용할 때는... 과목코드가 0열이 되요.. 0부터 시작한단 뜻이에요
그러니까 과목명은 1 열 이겠죠? 두번째에 있는 열이지만... 0부터 시작하니깐요 (이건 외우세요)
글이 정말정말 길어졌지만
결국 뒤에 플러스를 하지 않는건
cmb종류.listindex + 7 는 콤보상자에는 '종류'라는 목록 밖에 안뜨니까 이걸로 정보가 부족하므로
나머지 내용들은 다 워크시트에 있기 때문에. 워크시트내의 위치를 알려주기 위해 + 7 을 한거고요
lst과목.listindex 는 lst과목 이라는 하얀박스 안에 이미 워크시트의 내용들이 다 들어와 표시되어 있기 때문에, 굳이
워크시트의 위치를 표시할 필요 없이 그냥 이 박스만 참고하겠다는 의미에서 워크시트의 위치를 표시 안하는거에요~~
(이 박스 안은 0열 부터 시작한다는거 잊지 마시구요.. 워크시트에서는 1열,2열...이렇게 시작하지만..
즉 과목코드가 0열, 과목명이 1열, 담당교수 2열, 수강료가 네번째줄에 있지만 3열 입니다.. )
이해가 되셨기를!!! 저도 이거 30분전에야 이해하고 최대한 풀어서 써봤는데 이해 되셨기를~!!!
-
*2012-02-04 19:53:13
님 먼저 페이지 수를 써놓으셨는데 245,256p 가 아니라 245,246p 을 뜻하신거 같아
245,246p 이 두 페이지를 전제로 말씀드릴게요~!
먼저 245p 3-2 참조행의 listindex는요
앞에 cmb종류가 붙어있죠?
cmb종류.listindex 라는 말은 즉,
" '종류'라는 콤보상자를 열어보면 있는 '목록'이다~~' 라는 뜻이에요
listindex를 '목록'이라고 생각하세요!!!
그렇게보면 폼을 열어서 콤보상자를 눌러보면 있는 목록들....
이것들을 참조행으로 쓰겠다라는 뜻이에요
(참조행 = cmb종류.listindex 의 뜻이..ㅎㅎ)
그럼 참조행을 이걸로 하면..
cmb종류의 콤보상자의 목록들도 워크시트 내의 어디선가 따와서 만든 것일거잖아요?
예를들자면 cmb종류.Rowsource = "H7:H11"
h7에서 h11의 내용들로 cmb종류 콤보상자가 이루어져있단 뜻이죠..
그럼 cmb종류.ilstindex 의 의미가 " '종류' 콤보상자의 목록들" 이라고 했는데
실제 워크시트에서 이 목록들을 따온 장소는 h7부터 h11에 있잖아요!!!
그러므로 실제 워크시트에 이 내용들이 있는 위치를 더하기로 더해줘야 해요!
그래야 엑셀에서 제대로된 그 위치를 파악해서~~
월납부액, 납부총액, 이자총액을 구할 수 있어요~~
님이 이해하다 시피 실제 데이터가 7행부터 있기 때문에
그래서 cmb종류.listindex + 7 을 하는 것입니다~~
그.런.데!!! 왜왜 246의 listindex는 플러스를 하지 않는 것이냐??
246의 참조행 식을 보세요
lst과목.listindex 라고 되어 있죠.
lst과목 이 뭐냐하면요
cmb종류가 종류라는 콤보상자이듯이
lst과목은 과목 이라는 리스트(목록)을 뜻해요
cmb종류, lst과목 이런 이름 어떻게 아냐면요
일단 문제에 제시 되어 있어서 그대로 따르거나
어떤 문제는 저런거 안가르쳐 주는데요
그럴땐 비주얼베이직창 들어가서
일단 폼을 열구요
메뉴바 - 보기 - 속성창 들어가시면
창이 하나 뜨는데
폼의 버튼들을 하나하나 클릭해보면
그 창에 이름 이라는 부분에 걔 이름이 떠요 cmb종류, lst과목....
이렇게 알 수 잇어요~
아무튼 lst과목이란건 과목 박스 안에 뜨는 목록들을 의미해요...
온라인수강신청 폼을 살펴보시면 알겠지만
하얀바탕네모난 공간이 넓게 있죠? 여기가 lst과목 이에요
그런데 아마 컴퓨터 미리 lst과목.rowsource = " " 라는
lst과목안에 들어갈 내용들이 미리 만들어져 있을거에요
lst과목 안에는 워크시트의 목록이 뜬다는 말이죠....위에서 cmb종류.rowsource 로 워크시트 내의 어떤 목록을 가져와서 콤보상자의 목록으로 만들었듯이..
lst과목 안에도 워크시트 내의 어떤 목록을 가져온 식이.. 이미 만들어져 있어요
그러므로
lst과목.listindex 라는 것은 이 자체로. lst과목 그 하얀바탕에 떠 있는 그 목록을 의미하는거에요!!
아까 cmb종류.listindex 는 종류만 그냥 콤보상자로 떴었지만.....
lst과목.listindex 는 과목이라는 상자 안에 해당 워크 시트의 내용들이 다 뜨게 되요!!
비주얼베이직창을 끄고 수강신청 버튼을 눌러보세
그럼 온라인수강신청 폼이 뜹니다.
과목코드, 과목명, 담당교수, 수강료....
그게 워크시트에도 그대로 있죠??
cmb종류.listindex는 표가 다 떠있는게 아니고.. '종류'라는 일부만 콤보상자로 되있었기 때문에.
올바른 워크시트로 찾아가기 위해 + 7 이라고 위치를 알려준거구요
lst과목.listindex는 이미 lst과목 안에 워크시트내의 표가 통째로 들어와 있어요.
어느 하나만 있는게 아니라, 과목코드 과목명 담당교수 수강료까지 통째로 다 있네요
그러니까 기준을 굳이 워크시트에 안둬도 된단 뜻이에요
워크시트를 보지말고 참조행을 그냥 lst과목에 있는 이 목록들로 이용해도 되기 때문에
굳이 워크시트 내의 위치를 표시할 필요가 없죠
그러므로 lst과목.listindex는 '그냥 lst과목 에 떠 있는 이 표들을 이용할게요~~~' 라는 의미를 가진 것입니다
그러고나서 다시 프로시저 열어서 보시면.. (또는 246 프로시저 식들을 보시면)
cells(입력행,4)=lst과목.list(참조행,1) 이라고 되어 있는데
저기서 list는 말그대로 목록 이고요
lst과목 이라는 네모박스안의 목록 이란 의미에요
그 뒤의 (참조행,1)은
'위치는 참조행 이구요, 열은 1번째 열을 가져오세요" 라는 의미입니다..
lst과목 에 떠 있는 목록들을 보시면 과목코드, 과목명, 담당교수, 수강료 가 떠있는데
listindex , list를 이용할 때는... 과목코드가 0열이 되요.. 0부터 시작한단 뜻이에요
그러니까 과목명은 1 열 이겠죠? 두번째에 있는 열이지만... 0부터 시작하니깐요 (이건 외우세요)
글이 정말정말 길어졌지만
결국 뒤에 플러스를 하지 않는건
cmb종류.listindex + 7 는 콤보상자에는 '종류'라는 목록 밖에 안뜨니까 이걸로 정보가 부족하므로
나머지 내용들은 다 워크시트에 있기 때문에. 워크시트내의 위치를 알려주기 위해 + 7 을 한거고요
lst과목.listindex 는 lst과목 이라는 하얀박스 안에 이미 워크시트의 내용들이 다 들어와 표시되어 있기 때문에, 굳이
워크시트의 위치를 표시할 필요 없이 그냥 이 박스만 참고하겠다는 의미에서 워크시트의 위치를 표시 안하는거에요~~
(이 박스 안은 0열 부터 시작한다는거 잊지 마시구요.. 워크시트에서는 1열,2열...이렇게 시작하지만..
즉 과목코드가 0열, 과목명이 1열, 담당교수 2열, 수강료가 네번째줄에 있지만 3열 입니다.. )
이해가 되셨기를!!! 저도 이거 30분전에야 이해하고 최대한 풀어서 써봤는데 이해 되셨기를~!!!
-
*2012-02-07 08:13:43
보통 문제에 주어지구요. 문제에 주어지지 않으면
프로시저창의 폼에서 각 컨트롤을 클릭하여 속성창의 컨트롤이름을 확인 하시면 됩니다.
"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박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

좋은 하루 되세요.