강의 및 공부/엑셀실기 강의 [완료]

[109] Excel 기타작업 - 프로시저 작업 중급 CurrentRegion, Rows, Count, +4

Page T 2014. 8. 20. 18:41
728x90
반응형



2010년 컴활 1급 프로시저 문제를 가져오겠습니다.


[문제]
<수강인원등록화면> 폼의 '등록(cmd등록)' 버튼을 클릭하면 
분류, 강좌명, 강사명, 강좌요일, 수강료와 수강인원(Text정원), 총수강료를 계산하여
[표1]에 입력되도록 프로시저를 작성하시오.

위 문제에서 하는 말은


폼에서 각 항목을 작성 & 선택하고(빨간박스)

등록 버튼을 클릭하면(파란박스)

초록박스 안에 그와 똑같은 내용이 출력되도록 만들라는 소리입니다.

예를 들어 수강인원등록화면 폼 속 'Cob분류'에 
"외국어"항목이 선택되어있다면
등록 버튼을 눌렀을 때
정확히 엑셀시트 "B6"셀에 "외국어"라고 찍혀야 한다는 것입니다.

그러므로
폼에 입력된 항목과 엑셀 시트에 있는 표의 항목을 일치시키는 것이 관건입니다.





폼에 입력된 항목과 엑셀 시트에 있는 표의 항목을 일치시키기 위해서는


먼저 엑셀 시트에 있는 표의 시작점이 어디인지 파악해야 합니다.

표의 시작점A1 셀과 가장 가까운 '분류'필드(파란박스, B5셀)가 될 것입니다.

(참고 : 검은박스 부분을 '필드'라고 부릅니다.)


.


표의 시작점이 B5이라는 것은 파악했습니다.

이제는 폼에 입력된 항목들이 각각 표의 어느 부분에 들어가야 하는지를 알아보아야 합니다.


각 항목들은 필드 바로 밑부분에 들어가야 할 것입니다.

예를들어 분류는 B6셀에, 강좌명은 C6셀에, 강사명은 D6셀에, 들어가야 합니다.


각 항목의 공통점을 생각해봅시다.

공통점은 모두 6행에 입력되어야 한다는 것입니다.

그래서 우리는 일단 모든 항목을 6행으로 집어넣는 작업을 해야합니다.


여기까지 일련의 상황을 프로시저 명령으로 요약해보겠습니다.







우선 상황은 등록(Cmd등록)버튼을 Click했을 때의 상황이므로 디자인모드에서 Cmd등록을 더블클릭합니다.







그럼 상황 설정은 '등록 버튼을 Click 했을 때'로 설정이 되고

프로시저 명령을 작성할 수 있게 되는데


저는

r = Range("b5") . CurrentRegion . Rows . Count + 4

라고 작성했습니다.


명령을 뜯어보겠습니다.


Range("b5")     -     표의 시작지점은 b5셀 인(데)

    -     


CurrentRegion     -     제가 현재 폼에있는 항목들을 삽입하고 싶(은)

.     -     은


Rows     -     행(은)

.     -     은


Count     -     세어보니 


+4     -     엑셀 시트 첫 행으로부터 +4행 만큼 떨어져있습니다.

(첫 행 포함. 즉, 1행은 +1, 2행은 +2, 3행은 +3...)


=r     -     그 행 지점을 r 이라고 정의 하겠습니다.


이렇게 뜯어집니다.


위에서 정의된 r은 제가 지정한 임의의 알파벳으로서 Row의 r을 딴 것입니다.

다른 알파벳으로 바꿔도 됩니다.


위 명령에서 가장 의문이 되는 부분이 왜 +4 인가 입니다.



폼에입력된 항목들이 삽입되어야 하는 행은 

빨갛게 칠해진 부분인 6행 부분입니다.

그런데, 

+4를 하면 4행이 되는 것 아닌가

의문을 가질 수 있습니다.


답변을 드리자면

+ 할 때 필드는 계산하지 않습니다.


그러면 또 의문이 남습니다. 

필드는 5행에 있는데 

5행에 있는 필드를 빼더라도

+4를 하면 그래도 삽입되는 셀은 여전히 4행이라는 것입니다.


답변을 드리자면

엑셀은 필드가 작성되어있는 행 바로 윗 행(or 바로 아래 행)에 어떤 내용이 적혀있으면

그 내용이 적혀있는 행도 필드로 간주합니다.

[표 1]이라고 적혀진 부분도 필드로 생각하고 빼버린다는 겁니다.


즉, +4는

필드로 간주되는 4행과 5행을 제외하고 

+1 = 1행 -> +2 = 2행 -> +3 = 3행 -> +4 = 6행 이 지정되며

폼에있는 항목들이 삽입될 행은 6행이 됩니다.


만약 [표 1]이 B4셀이 아닌 B3셀에 있으면 어떻게 되는지 궁금하신 분들이 계실겁니다.


답변을 드리자면

[표 1]은 필드와 1행 이상 떨어져있어서 필드로 간주되지 않습니다.

그러므로 +4가 아닌 +5를 해야

폼에있는 항목들을 6행에 삽입 할 수 있게 됩니다.


이렇게 행을 지정해준 후

이제는 정확한 열의 위치를 설정해주어야 합니다.

열의 위치 설정은 ListIndex 명령과 함께

설명드리도록 하겠습니다.

728x90
반응형