자세하게 풀이 부탁드립니다.
안녕하세요.
구체적으로 어떤 부분이 이해가 안되시는지 알려주시면
좀 더 정확히 답변드릴 수 있습니다.
교재 72쪽에 해설이 나와 있는데요,
1.
<구매> 버튼을 누르면 물품구매 폼이 나타나야 합니다.
cmd구매_Click 프로시저에
물품구매.show 를 입력하시면 물품구매 폼이 보이게 됩니다.
2.
폼이 실행되면 콤보 상자에 오늘 날짜 ~ 5일 전 날짜까지 항목에 표시되도록해야 합니다.
폼이 실행되면 이므로 UserForm_Initialize( ) 프로시저에 코드를 작성해 주셔야 합니다.
cmb날짜 컨트롤에 데이터를 직접 추가해야 하므로 .additem 메서드를 이용합니다.
cmb날짜.additem date 는 현재 날짜가 cmb날짜에 추가됩니다.
어제 날짜를 표현하기 위해 date-1을 이용합니다.
cmb날짜.additem date-1 로 작성하면 되겠죠.
3. 폼의 자료를 워크시트에 입력하는 문제입니다.
74쪽 해설을 참고해 주셔야 합니다.
cmb입력_Click() 프로시저에는 참조행과 입력행이라는 변수가 사용됩니다.
변수는 변하는 값을 저장하는 곳으로,
참조행은 참조되는 행을 지정하고, 입력행은 워크시트의 마지막 데이터 다음 행을 가리키는 것으로 새로 데이터가 들어갈 행입니다.
우선,
참조행 = lst품목.Listindex 로 설정합니다.
lst품목은 폼의 목록 상자이고 lst품목.listindex는 목록에서 선택된 데이터의 인덱스번호를 반환합니다.
목록상자의 목록은 인덱스 0부터 시작합니다.
만약 두 번째 데이터를 선택한다면 listindex는 1이 됩니다.
입력행 = [a1].ROW + [a1].CurrentRegion.Rows.Count 가 됩니다.
[a1].Row는 기준행이 되는 [a1] 셀의 행인 1입니다.
[a1].CurrentRegion.Rows.Count 는 [a1]과 연결된 행의 수를 세는 것입니다.
29쪽 워크시트까지 함께 보시면
입력행 = [a1].ROW + [a1].CurrentRegion.Rows.Count
입력행 = 1 + 4(1,2,3,4행이므로 개수는 4입니다.) = 5
다음 입력행이 5가 되는 것이죠.
위의 결과대로 이제 참조행에 1, 입력행에 5가 있다고 가정합니다.
Cells(1,1)이면 워크시트의 1행 1열을 의미하는 것입니다.
Cells(입력행,1) =CDate(cmb날짜) 는
Cells(5,1)에 cmb날짜의 값을 Cdate 함수로 날짜 형식으로 지정해서 표시합니다.
Cells(입력행,2) = cmb문구점 은
Cells(5,2)에 cmb날짜에서 선택한 값을 표시합니다.
Cells(입력행,3) = lst품목.List(참조행,0) 은
Cells(5,3)에 lst품목.List(1,0)의 값을 표시합니다.
lst품목.List(1,0)은 lst품목 컨트롤의 인덱스를 기준으로 1,0 에 있는 항목입니다.
29쪽 화면을 기준으로 '연필'이 표시됩니다.
Cells(입력행,4) = lst품목.List(참조행,1) 은
Cells(5,4)에 lst품목.List(1,1)의 값을 표시합니다.
lst품목.List(1,1)은 lst품목 컨트롤의 인덱스를 기준으로 1,1 에 있는 항목입니다.
29쪽 화면을 기준으로 '1200'이 표시됩니다.
5열은 txt수량을 숫자로 만들어서 표시합니다.
6열은 4열과 5열의 값을 곱해서 표시합니다.
4. 폼 종료하기
['기타작업-1'!A1] = "판매 현황"은 기타작업-1 시트의 A1셀에 "판매 현황"을 표시합니다.
Unload me는 현재 폼을 종료합니다.
좋은 하루 보내세요.
-
관리자2019-07-03 00:26:01
안녕하세요.
구체적으로 어떤 부분이 이해가 안되시는지 알려주시면
좀 더 정확히 답변드릴 수 있습니다.
교재 72쪽에 해설이 나와 있는데요,
1.
<구매> 버튼을 누르면 물품구매 폼이 나타나야 합니다.
cmd구매_Click 프로시저에
물품구매.show 를 입력하시면 물품구매 폼이 보이게 됩니다.
2.
폼이 실행되면 콤보 상자에 오늘 날짜 ~ 5일 전 날짜까지 항목에 표시되도록해야 합니다.
폼이 실행되면 이므로 UserForm_Initialize( ) 프로시저에 코드를 작성해 주셔야 합니다.
cmb날짜 컨트롤에 데이터를 직접 추가해야 하므로 .additem 메서드를 이용합니다.
cmb날짜.additem date 는 현재 날짜가 cmb날짜에 추가됩니다.
어제 날짜를 표현하기 위해 date-1을 이용합니다.
cmb날짜.additem date-1 로 작성하면 되겠죠.
3. 폼의 자료를 워크시트에 입력하는 문제입니다.
74쪽 해설을 참고해 주셔야 합니다.
cmb입력_Click() 프로시저에는 참조행과 입력행이라는 변수가 사용됩니다.
변수는 변하는 값을 저장하는 곳으로,
참조행은 참조되는 행을 지정하고, 입력행은 워크시트의 마지막 데이터 다음 행을 가리키는 것으로 새로 데이터가 들어갈 행입니다.
우선,
참조행 = lst품목.Listindex 로 설정합니다.
lst품목은 폼의 목록 상자이고 lst품목.listindex는 목록에서 선택된 데이터의 인덱스번호를 반환합니다.
목록상자의 목록은 인덱스 0부터 시작합니다.
만약 두 번째 데이터를 선택한다면 listindex는 1이 됩니다.
입력행 = [a1].ROW + [a1].CurrentRegion.Rows.Count 가 됩니다.
[a1].Row는 기준행이 되는 [a1] 셀의 행인 1입니다.
[a1].CurrentRegion.Rows.Count 는 [a1]과 연결된 행의 수를 세는 것입니다.
29쪽 워크시트까지 함께 보시면
입력행 = [a1].ROW + [a1].CurrentRegion.Rows.Count
입력행 = 1 + 4(1,2,3,4행이므로 개수는 4입니다.) = 5
다음 입력행이 5가 되는 것이죠.
위의 결과대로 이제 참조행에 1, 입력행에 5가 있다고 가정합니다.
Cells(1,1)이면 워크시트의 1행 1열을 의미하는 것입니다.
Cells(입력행,1) =CDate(cmb날짜) 는
Cells(5,1)에 cmb날짜의 값을 Cdate 함수로 날짜 형식으로 지정해서 표시합니다.
Cells(입력행,2) = cmb문구점 은
Cells(5,2)에 cmb날짜에서 선택한 값을 표시합니다.
Cells(입력행,3) = lst품목.List(참조행,0) 은
Cells(5,3)에 lst품목.List(1,0)의 값을 표시합니다.
lst품목.List(1,0)은 lst품목 컨트롤의 인덱스를 기준으로 1,0 에 있는 항목입니다.
29쪽 화면을 기준으로 '연필'이 표시됩니다.
Cells(입력행,4) = lst품목.List(참조행,1) 은
Cells(5,4)에 lst품목.List(1,1)의 값을 표시합니다.
lst품목.List(1,1)은 lst품목 컨트롤의 인덱스를 기준으로 1,1 에 있는 항목입니다.
29쪽 화면을 기준으로 '1200'이 표시됩니다.
5열은 txt수량을 숫자로 만들어서 표시합니다.
6열은 4열과 5열의 값을 곱해서 표시합니다.
4. 폼 종료하기
['기타작업-1'!A1] = "판매 현황"은 기타작업-1 시트의 A1셀에 "판매 현황"을 표시합니다.
Unload me는 현재 폼을 종료합니다.
좋은 하루 보내세요.