예제로 익히는 액티브X컨트롤, 오늘은 그 다섯번째로 MSFlexGrid를 실습해보겠습니다.
영어 사전에서 Grid를 찾아보면 ‘격자’라는 뜻이 있습니다. 바둑판의 눈금과 같은 것을 말합니다.
Flex는 flexible의 준말이니 융통성이 있다는 뜻입니다.
뜻풀이를 통해 짐작을 하셨겠지만 MSFlexGird는 마치 엑셀의 셀모양과 같은 도표로 표시하는 기능을 합니다.
다음은 오늘 실습할 MSFlexGird를 사용한 예제를 실행한 화면입니다.

실습을 통해 MSFlexGrid 컨트롤과 더불어 For ~ Next문, SetFocus 메소드 등도 함께 다루기로 하겠습니다.
- 비베를 실행합니다.(늘 그렇듯이 ‘표준 EXE’로 실행합니다.)
- 오늘 실습할 MSFlexGird 컨트롤은 기본 컨트롤 도구 모음에 없으니 아래와 같이 새롭게 추가합니다.
- 컨트롤 도구 모음의 빈 곳을 마우스 오른쪽으로 클릭하여 팝업 메뉴를 표시합니다.
- 팝업 메뉴에서 [구성 요소(O)]를 선택합니다.
- [구성 요소] 대화상자에서 Microsoft FlexGrid Contrl 6.0을 찾아 체크 표시를 하고 [확인]을 클릭하면 컨트롤 도구 모음에 MSFlexGrid 컨트롤이 나타납니다.

- 다음과 같이 폼을 구성합니다.
- 먼저 MSFlexGrid, Label, TextBox, CommandButton 컨트롤을 이용하여 폼 위에 컨트롤을 배치합니다.
- 다음과 같이 각 개체의 속성을 변경합니다.

FixedRows와 FixedCols 속성는 고정된 열과 행의 수를 지정하는 것입니다. 엑셀에서 행 머리글과 열 머리글에 해당하는 것입니다. 즉 내용을 입력할 수 없는 회색으로 표시된 셀을 말하죠.
그리고 Rows와 Cols의 숫자를 각각 4와 5로 하여 4행 5열의 그리드를 만든 것입니다.
- 메뉴에서 [보기]
- [코드]를 실행한 후 다음과 같이 코드를 작성합니다.
- 먼저 프로그램에 사용될 변수를 선언합니다. 가장 윗 줄에 아래와 같이 그대로 적으면 됩니다.
Dim tempRow, tempCol, tempCell, Sum, Average As Integer - Form 개체의 Load 이벤트를 선택하여 위 ①과 같이 코드를 입력합니다.
※Form 개체의 Load 이벤트를 선택하려면 아래와 같이 하세요.

또는 폼의 빈 곳을 더블클릭해도 됩니다.
Form_Load() 부분은 프로그램을 실행했을 때 가장 먼저 실행되는 부분입니다.
따라서 아직은 비어있는 MSFlexGrid에 아래와 같은 내용을 집어 넣기 위한 코드입니다.
코드와 아래 그림을 잘 보면 그 뜻을 이해하기가 어렵지 않을 것입니다.

단 여기서 주의해야할 것은 TextMatrix(Row,Col)와 같이 행에 해당되는 숫자를 먼저 쓰고, 다음에 열에 해당하는 숫자를 씁니다. 그런데 행과 열의 첫 숫자는 0으로 시작합니다.
따라서 grdFlexGrid(0,0)이 가장 왼쪽 상단 모서리의 셀을 나타냅니다. - grdFirst 개체의 Click 이벤트를 선택하여 위 ②와 같이 코드를 입력합니다.
첫줄의 txtJumsu.SetFocus의 뜻은,
그리드의 어떤 곳을 클릭했을 때 즉 그리드에 클릭 이벤트가 발생했을 때(gridFirst_Click()), txtJumsu라는 텍스트 박스에 커서를 위치하고 활성화하라는 뜻입니다.
따라서 셀의 어떤 곳을 클릭하면 바로 텍스트 박스에서 입력 준비가 되는 것입니다. - txtJumsu 개체의 Change 이벤트를 선택하여 위 ③과 같이 코드를 입력합니다.
텍스트 박스에 내용이 바뀌면 바로 MSFlexGrid의 해당 셀에 그 내용을 반영하라는 뜻입니다. - cmdAverage 개체의 Click 이벤트를 선택하여 위 ④와 같이 코드를 입력합니다.
입력된 내용을 바탕으로 평균을 계산하는 로직입니다.
두 개의 For 문으로 되어 있습니다. 일명 중첩된 For~Next문이라고 합니다.
행의 숫자를 1에서 3까지 바뀌는 동안, 열의 숫자도 1~3까지 하나씩 증가하면서 각 셀의 값을 더하기 위한 로직입니다.- 즉 처음 행의 숫자가 1일 때, 열의 숫자가 1부터 3까지 바뀌면서 값을 하나하나 누적해서 더합니다.
그런 다음 합계를 3으로 나누어 평균을 구한 값을 grdFirst.TextMatrix(1,4)의 값에 대입하는 것입니다.(1,4라는 표현은 실제로는 2행 5열이라는 뜻입니다.) - 다시 행의 숫자가 2일 때, 마찬가지로 열의 숫자가 1부터 3까지 바뀌면서 값을 누적해서 더하고, 평균을 구하여 grdFirst.TextMatrix(2,4)에 대입합니다.
- 다시 같은 방법으로 grdFirst.TextMatrix(3,4)에 값을 대입하고 For~Next문을 완전히 마칩니다.
이 부분이 프로그램의 핵심 로직이 됩니다. 프로그래밍 왕초보분이라면 이 부분이 제일 어려울 수 있습니다. 보고 또 봐서 그 뜻을 꼭 이해하시기 바랍니다.
- 즉 처음 행의 숫자가 1일 때, 열의 숫자가 1부터 3까지 바뀌면서 값을 하나하나 누적해서 더합니다.
- 먼저 프로그램에 사용될 변수를 선언합니다. 가장 윗 줄에 아래와 같이 그대로 적으면 됩니다.
- [F5]를 눌러 프로그램을 실행해 보세요.
정상적으로 실행이 되면 적당한 이름을 저장하세요. 필요하다면 실행 파일도 만드시구요.(실행 파일 만드는 방법 아시죠? 아주 옛날에 실습했습니다. 아마도 시계 만들 때 했을걸요.)
내일이면 또 한 주의 시작입니다.
이번 주에도 늘 행복하시길 바랍니다.
이상 동주아빠 손병목이었습니다.

