본문 바로가기
자격증/컴활

[엑셀] 컴활 엑셀 기타작업 프로시저 사용 방법 총정리(폼 사용, 목록값, 폰트 등)

by 도도새 도 2021. 7. 25.

엑셀 폼 프로시저 사용법

컴활 엑셀 공부를 하다보니, 꽤나 많은 사람들이 엑셀 마지막 기타작업의 프로시저와 폼 사용에서 포기를 한다는 것을 알게 되었다. 사실 포기라기보다는 전략적으로 다른 문제를 더욱 집중적으로 공부해 상대적으로 할 게 많은 (프로시저는 간단한 코딩을 요구한다) 프로시저를 안하는 것일 것이다.

 

그러나 과연, 엑셀 계산 문제를 공부한다고 해서, 완벽히 백 점을 맞을 수 있을까? 내 생각은 프로시저 작성 문제를 포기하지 말고 조금이라도 외워 부분 점수를 노려 보는 것이 좋겠다는 생각이다.

 

그런 생각으로 오늘은 엑셀 프로시저 공부 중 정리한 엑셀 기타작업 마지막 문제 프로시저 작성(폼 작성) 방법을 공유한다.

1. 버튼 클릭시 폼 열기

 

우선은 모두가 알 법한 버튼 클릭시 폼이 열리는 작업이다. 형태는 아래와 같다.


폼이름.Show


예를 들어 버튼을 클릭시 폼1이라는 폼을 열라고 지시한다면

폼1.show

라고 작성하면 된다.

2. 폼의 콤보상자에 값 입력

 

이제는 꽤나 암기를 필요로 할지도 모르는 작업이다. 폼의 콤보상자에 값이 기본적으로 나오게 하는 작업이다. 기본적으로 나오는 작업은 initialize()에서 작성한다.

 

1.오늘 날짜로부터 4일 전까지가 <<cmb계약일>>에 나타나게 하기

 

특별히 표나 셀을 이용하라는 말이 없다면 Additem이라는 매서드를 이용한다. 사용 방법은 아래와 같다.


개체명.Additme "목록값 1"

개체명.Additme 목록값2"


즉, 정답은 이렇게 될 것이다.

엑셀 목록 입력 예시

해석: cmb계약일에 date, date-1, date-2...를 추가한다.//date함수는 현재 컴퓨터 시스템의 날짜를 반환한다. 따라서 현재날로부터 4일 전까지가 추가된다.

입력 후 폼을 실행해보면 콤보상자에 잘 뜨는 것을 확인 할 수 있다.

엑셀 콤보상자 목록값

 

2. C5:G8까지의 범위, 표가 <<cmb계약일>>에 나타나게 하기

 

 범위를 추가하라고 하면 additem메서드 대신 rowsource라는 매서드를 사용한다. 사용 방법은 아래와 같다.

  • 개체명.Rowsource = "A1:A5"

즉, 정답은 이렇게 될 것이다.

cmb계약일.Rowsource = "g5:g8"

 

*주의

Additem 메서드는 =를 사용하지 않지만 rowsource메서드는 <<=>>를 사용함에 주의!!

3. 입력 버튼 클릭시 폼에 입력된 자료가 표에 나타나게 하기

이번에는 입력이다. 컴활을 공부하는 입장에서 어쩌면 첫번째 난관일지도 모르겠다. 표에 값을 입력하기 위해서는, 우서는 입력할 행의 위치를 구해야한다. 프로시저에서 입력행은 이렇게 구한다.

 

1. 입력행 구하기


입력행 위치 구하기 : 입력행 = range("표의 첫 셀").currentregion.rows.count + @


해석:표의 첫 셀과 연결되어있는 행들의 갯수를 센다

엑셀 입력행 구하기

입력행을 구하려면 기준으로 한 표의 첫셀 주변에 다른 문구가 결합되어 있는지 봐야한다. 그림을 보자. 표의 첫 셀은 b4로 잡을 수 있다. 그러나 바로 위 b3에는 연결된 문구라는 텍스트가 들어있다. 그럴 떄, range("b4").currentregion.rows.count를 사용하면 B4셀과 연결 된 셀이 2개이니(B3, B4) 2가 반환된다.

우리가 입력하고자 하는 셀은 B5이다. 즉, 5행이다. 하지만 현재 식으로 반환된 값은 2이다. 그러므로 이를 5로 만들어 주기 위해 +3을 붙인다. 즉 +@부분에 3이 들어간다.

 

2. 입력행 이용해 표에 값 넣기

이제 입력행을 알았다. Cells(입력행, 입력열)을 이용하여 표에 값을 할당하면 된다. B열의 경우 숫자 2를 넣어 대체 가능하다.

예를 들어 <<txt입력>>에 값을 입력 후 이를 입력행, B5에 넣고자 한다면 해답은 아래와 같다.


Cells(입력행, 2) = txt입력


 

 

*주의

주의 예시사진

  • 날짜 입력시 앞 뒤로 #
  • 문자 입력시 앞 뒤로 "
  • 문자 식 결합시 & 사용(문자와 변수 결합 : 성명 & "님은 할인 대상")
  • 오늘 날짜 출력 : DATE (액세스와 동일, 액셀의 경우 TODAY()
  • 오늘 날짜와 시간 출력 : NOW(액세스와 동일, 액셀의 경우 NOW())

 

4. 폼 종료 및 기타

1. 종료 버튼을 클릭시 폼이 메모리에서 삭제되도록하라

(폼이 메모리에서 삭제 = 폼 종료)

 

폼 종료는 폼이름.show 만큼이나 단순하고 간단하다. 아래의 식을 입력하면 된다.


Unload Me


주의할 점은 unload와 me사이에 << . >>을 넣지 않는다는 것이다.

 

2_1. 폼 종료 버튼 클릭시 현재 시트의 셀에 글자가 나오게 하기

가끔 폼 종료와 함께 엮여서 나오는 문제다. 폼 종료 버튼을 클릭시 셀이 글자가 나오게 하는 식을 작성해야하는데, 이는 unload me 식 아래에 쭉 기술하면 된다. 형식은 아래와 같다.


range("셀") = "출력할 글자"

range("셀").font.속성


 

예를 들어 A1셀에 "수고하셨습니다"를 출력하고, 글자체를 기울임꼴(이텔릭체), 굵게, 25포인트로 나타내는 식은 아래와 같다.

엑셀 프로시저 폰트 입력 예시
엑셀 프로시저 폰트 출력 예시

 

프로시저에서 폰트를 컨트롤 할 수 있는 폰트 관련 속성은 아래와 같다.

폰트 관련 속성
글자체 변경 FONT. NAME = "궁서체"
글자 크기 변경 FONT.SIZE = "14"
굴게 FONT.BOLD = TRUE
기울임꼴 FONT.ITALIC = TRUE 

 

2_2 다른 시트의 셀에 글자 나오게 하기

가끔 문제를 푸는 시트가 아닌 다른 시트에 글자를 출력하게 하는 경우도 있다. 여기서 관건은 다른 시트의 주소를 어떻게 참조시키느냐이다. 아래와 같이 하면 된다.


range(" '시트이름' ! 셀주소") = "입력할 텍스트"


 

엑셀 프로시저 다른 시트에 폰트 입력 예시

 

rage안에 큰 따옴표를 적고, 작은 따옴표를 적은 후 시트 이름을 입력한다. 그리고 작은 따옴표를 닫고, !를 적은 후 셀 이름을 입력한다. 그 다음 큰 따옴표를 닫는다. 그렇다면 <<기타작업-1>> 시트의 <<A1셀>>에 수고하셨습니다 글자가 입력된다. 

 

3. 입력을 마쳤을 시 모든 컨트롤을 초기화

모든 컨트롤에 ""을 할당한다.

 


txt입력 = ""txt입력2 = ""


댓글