컴퓨터 공부/엑셀 & VBA

[엑셀vba] 사용자 정의 폼 - Label, TextBox 텍스트의 세로 정렬을 가운데로 해보자!

도 박사 2021. 8. 28. 13:58
반응형

VBA 사용자 정의 폼에서는 가로 텍스트 정렬만 지원하고 있다. 텍스트가 들어가는 컨트롤의 속성에서 TextAlign 항목에서 왼쪽, 오른쪽, 중앙 정렬을 선택 할 수 있다. (웃긴건 버튼식 컨트롤들은 기본적으로 세로 정렬이 가운데로 되어있음 ㄷㄷ;;)

텍스트 정렬 항목
실제 적용된 모습

보시다시피 왼쪽, 중앙, 오른쪽만 가능하며 실제로 적용해보면 가로 정렬만 된다. 세로 정렬도 필요할 때가 있는데 약간의 꼼수를 이용해서 세로 정렬 구현이 가능하다. 

 

세로 정렬 구현

세로 정렬을 구현하기 위해선 두 가지 컨트롤이 필요하다. Label 1개와 Label 또는 TextBox 아무거나 1개만 더 있으면 된다. 본문에서는 Label 2개를 이용해서 세로 정렬을 구현해보겠다.


1. Label1

1. 라벨 생성
2. 속성 변경
3. 속성 변경된 모습

라벨 하나를 생성하고 Caption 삭제, BackStyle과 BoderStyle 속성을 둘 다 1로 변경해준다. 

 

Caption: 폼 실행 시 보여지는 글자

 

BackStyle(배경 설정)

  • 0 - fmBackStyleTransperent: 배경 안보이게 설정(투명해짐)
  • 1 - fmBackStyleOpaque : 배경 보이게 설정

BorderStyle(테두리 설정)

  • 0 - fmBorderStyleNone: 테두리 없음
  • 1 - fmBorderStyleSingle : 테두리 있음

 


2. Label2

1. 라벨2 생성
2. 라벨2 속성 변경
3. 속성 변경된 모습

라벨2 속성에서 배경과 테두리 항목은 둘 다 0으로 하고 TextAlign 항목은 중앙정렬로 설정한다. 그리고 라벨2를 라벨1위치에 스윽 올려보자.

 

라벨2 위치 이동
중앙 정렬에 성공한 모습

 

뭔가 가운데에 잘 안맞는거 같다고 생각되면 라벨2의 속성 창에서 Top를 직접 입력해보면서 세로 중앙을 맞춰보자.

 

두 개의 라벨 그룹화

세로 중앙 정렬이 제대로 되었다고 판단되면 두 개의 라벨을 드래그하여 그룹화시키면 하나의 몸체처럼 움직인다. 하나로 보이게 할 수 있는 셈이다.


반응형