반응형

이번 포스트에서는 vba 를 이용하여 셀의 속성을 조정하는 방법을 설명 드리겠습니다.

엑셀은 단순한 표의 형식을 취하고 있지만 셀의 간격이나 테두리 등의 속성을 자유롭게 조정할 수 있어 다양한 서식에 사용하기 적합한 훌륭한 워드 프로세서 입니다.

데이터의 타입이나 종류에 따라 현재 엑셀 시트의 표를 자동으로 설정해주는 것이 필요한 경우가 있습니다. 

예를 들면 csv 로 내려받은 단순한 정보들을 시트에 올리고 필요한 정보와 필요하지 않은 정보의 열을 구분하여 표시해 준다던가 아예 불필요한 열이나 행은 숨김 처리를 할 수도 있고요. 주요 행의 테두리 정보를 구분하여 보여주어야 하는 경우도 있겠습니다. 또한 서실을 vba로 만들어 놓으면 어떤 다른 인원에 의해 조정된 폼을 원래 지정한 형식으로 완벽하고 빠르게 설정하는 것도 가능할 것입니다.

이번 포스트에서는 아래의 내용을 다루려고 합니다.

  • 행의 높이를 조절하는 방법
  • 열의 넓이를 조정하는 방법
  • 행 또는 열을 숨기거나 숨김 취소 하는 방법
  • 테두리 선을 지정하는 방법
  • 테두리 선의 모양을 지정하는 방법

 

 

엑셀 VBA 를 이용하여 행(row) 높이를 지정하는 방법

Sub changeCellStyle()

    Dim mySht As Worksheet
    Dim myCell As Range
    
    Set mySht = ActiveSheet
    Set myCell = mySht.Range("B2") ' 원하는 행의 셀을 지정
    
    
    ' 지정한 셀(행)의 높이를 32로 설정한다.
    myCell.RowHeight = 32
    
    '픽셀 기준으로 입력하고 싶다면 0.75 를 곱하세요.
    myCell.RowHeight = 32 * 0.75


End Sub

 

행의 높이를 Pixel 을 기준으로 지정해야 하는 경우 pixel size * 0.75 를 해주면 됩니다.

예를 들면 이미지를 붙여넣는 등의 작업을 할때 이미지의 크기가 150 이라면 150 * 0.75 의 값을 셀의 크기에 지정을 하면 됩니다. 아래와 같이 말이죠.

 

 

엑셀 VBA 를 이용하여 열(column)의 넓이를 지정하는 방법???

여기서 셀의 폭을 지정하는 방법은 갑자기 이야기가 달라집니다. 저는 그래픽 디자이너 이므로 당연히 픽셀 기준으로 셀의 넓이를 정해주고 싶거든요. 여기서 미치고 팔딱 뛰는 상황이 생겨나게 됩니다.

정말 저는 마이크로소프트라는 회사를 이해할 수가 없습니다. 

이부분은 아래 포스팅을 참고해 주세요. 작성하면서도 맨붕이네요.

2020/02/05 - [DEV/VBA] - [VBA] 셀의 넓이를 픽셀로 지정하기 (set column width by pixels)

 

[VBA] 셀의 넓이를 픽셀로 지정하기 (set column width by pixels)

정말 지긋지긋한 마이크로 소프트 입니다. 저는 VBA 를 하면서 이번 포스트 내용만큼 어의가 없는 경우는 없었던거 같습니다. 왜 때문이냐고요? 바로 아주 단순한 셀 넓이를 VBA 를 이용하여 지정하는 방법 때문입..

diy-dev-design.tistory.com

 

 

행 또는 열을 숨기거나 숨김 취소하는 방법

Sub changeCellStyle()
    
    Dim mySht As Worksheet
    Dim myCell As Range
    
    Set mySht = ActiveSheet
    Set myCell = mySht.Range("B2") ' 원하는 행의 셀을 지정'
    
	
    ' 선택한 셀이 있는 모든 행을 숨김처리할 때'
    myCell.EntireRow.Hidden = True
    
    ' 선택한 셀이 있는 모든 행을 숨김취소 할때'
    myCell.EntireRow.Hidden = False

End Sub

 

숨기거나 해제 하는 것은 간단하죠?

entireRow 라는 개체를 이용하여 전체 행에 대한 지정을 한뒤 hidden 이라는 프라퍼티로 숨기거나 숨기지 않도록 설정 할 수 있습니다.

열 (column) 을 숨기거나 해제 하는 것도 완전히 동일합니다.

아래와 같이 entireRow 대신 entireColumn 으로 사용하면 됩니다.

    myCell.EntireColumn.Hidden = True
    
    myCell.EntireColumn.Hidden = False

 

 

테두리의 선을 지정 (해제) 하는 방법

선택한 셀 또는 행의 모든 테두리를 없애는 방법

Sub changeCellStyle()
    
    Dim mySht As Worksheet
    Dim myCell As Range
    
    Set mySht = ActiveSheet
    Set myCell = mySht.Range("B2") ' 원하는 행의 셀을 지정
    
    ' 선택한 셀의 테두리를 없애는 방법 '
    myCell.Borders.LineStyle = xlNone
    
    '선택한 행전체의 테두리를 없애는 방법
    myCell.EntireRow.Borders.LineStyle = xlNone
    
    
End Sub

 

선택한 셀의 테두리를 지정하는 방법

Sub changeCellStyle()
    
    Dim mySht As Worksheet
    Dim myCell As Range
    
    Set mySht = ActiveSheet
    Set myCell = mySht.Range("B2") ' 원하는 행의 셀을 지정
    
    '선택한 행전체의 테두리를 없애는 방법
    myCell.EntireRow.Borders.LineStyle = xlNone
    
    
    
    ' 선택한 셀의 왼쪽 테두리만 보통의 실선으로 보여주는 방법 '
    myCell.Borders(xlEdgeLeft).LineStyle = xlContinuous
    
    ' 선택한 셀의 오른쪽 테두리만 보통의 실선으로 보여주는 방법 '
    myCell.Borders(xlEdgeRight).LineStyle = xlContinuous
    
    ' 선택한 셀의 위쪽 테두리만 보통의 실선으로 보여주는 방법 '
    myCell.Borders(xlEdgeTop).LineStyle = xlContinuous
    
    ' 선택한 셀의 아래쪽 테두리만 보통의 실선으로 보여주는 방법 '
    myCell.Borders(xlEdgeBottom).LineStyle = xlContinuous
    
   ' 선택한 셀의 테두리를 보통의 실선으로 보여주는 방법 '
    myCell.Borders.LineStyle = xlContinuous
    
End Sub

제가 방향별로 지정하는 방법을 적어 두었으니 필요한 내용을 추려다가 사용하시면 됩니다.

 

 

테두리의 선의 속성을 변경하는 하는 방법

만약 아래쪽 선만 두껍게 지정하고 싶다면?

' 선택한 셀의 아래쪽 테두리만 두꺼운 실선으로 보여주는 방법 '
    myCell.Borders(xlEdgeBottom).Weight = xlThick
    myCell.Borders(xlEdgeBottom).LineStyle = xlContinuous

요렇게 해주시면 됩니다.

참고로 라인 스타일을 xlContinuous 말고 점선이나 다양한 스타일로 적용하는 것도 가능합니다.

  • xlContinuous 연속선입니다.
  • xlDash 파선입니다.
  • xlDashDot 교대로 연결된 파선과 점선입니다.
  • xlDashDotDot 파선과 두 개의 점선입니다.
  • xlDot 점선입니다.
  • xlDouble 이중선입니다.
  • xlLineStyleNone 선이 없습니다.
  • xlSlantDashDot 기울어진 파선입니다.

 

위에 소개해드린 여러가지 속성들을 조합하면 하나의 완성된 폼을 자동으로 생성하는 것이 가능합니다.

한번 짜 놓을 때는 귀찮을 수 있지만 수도없이 계속해서 폼을 맞추어주어야 하는 어떤 상황이라면 자동화 개발을 하는것이 정신건강이나 육체건강에 좋겠죠.

 

셀의 색상을 채워넣는 방법은 이전 포스트를 참고해 주세요.

2019/08/30 - [DEV/VBA] - [VBA]RGB 색상 값이 들어있는 셀에 셀 색상 지정하기

 

[VBA]RGB 색상 값이 들어있는 셀에 셀 색상 지정하기

이번 강좌에서는 셀에 입력되어 있는 컬러 값을 이용하여 셀의 색상을 지정하는 방법을 알아보도록 하겠습니다. 디자이너 분들이라면 언제가 한번쯤은 엑셀 시트에 자신이 정의한 컬러 값을 정

diy-dev-design.tistory.com

이렇게 간단하게 vba 를 이용하여 셀의 모양을 조정하는 것이 가능합니다.

어렵게 생각치 마시고 위에 설명드릴 방법을 다양하게 응용하여 자신에게 맞는 자동화 툴을 구성하시기 바랍니다.

2020/09/04 - [DEV/VBA] - [vba] 엑셀 이미지 리스트로 일괄 다운로드 받기

 

[vba] 엑셀 이미지 리스트로 일괄 다운로드 받기

안녕하세요. 오늘은 엑셀 리스트로 가지고 있는 웹 이미지 경로를 이용하여 일괄 다운로드 하는 방법을 소개해 드릴까 합니다. 인터넷에 찾아보면 이런저런 다운로더들이 있는데요. 입맛에 맞

diy-dev-design.tistory.com

2020/06/22 - [DEV/VBA] - [vba] 초등학교 연산 자동 문제집 - 곱셈 추가

 

[vba] 초등학교 연산 자동 문제집 - 곱셈 추가

안녕하세요 주인장입니다. 코로나로 인한 개학연기로 아이들이 집안에서만 딩굴딩굴 거려 답답하신가요? 아이들에게 신나는 연산 문제를 내 주는건 어떨까요? ?? 는 아니고 VBA 로 제가 그동안

diy-dev-design.tistory.com

2019/12/06 - [DEV/VBA] - [vba] 하위폴더 내의 모든 파일 정보 가져오기

 

[vba] 하위폴더 내의 모든 파일 정보 가져오기

일을 하다 보면 가끔 업무를 진행하던 경로 하위에 있는 데이들의 리스트를 만들어야 하는 경우가 있습니다. 하나의 폴더라면 어떻게 해보겠는데 그 폴더가 하위 뎁스가 연속해서 있고 저장되

diy-dev-design.tistory.com

감사합니다.

반응형

+ Recent posts