엑셀에서 셀 병합을 할 때 첫 번째 셀에 있는 내용만 남고 병합하는 나머지 셀에 있는 내용은 모두 지워집니다. 이를 지워지지 않고 내용 모두 살린 상태로 셀 병합을 할 수 있는 방법이 있으면 번거로운 작업이 단순해질 수 있을 것 같습니다. VBA로 이 작업이 가능하도록 할 수 있습니다. 이제부터 그 방법을 알아보겠습니다.
1. 버튼 만들기
엑셀을 열고 새 워크시트를 만듭니다. 그리고, Sheet1 시트에서 버튼을 하나 만듭니다.
[그림 1]을 보시면 B열에 셀 병합할 내용이 있고 그 옆에 '셀병합'이라는 버튼 하나를 만들었습니다.
버튼을 만드는 방법은 이전글(VBA로 업체별 납품 품목 자동으로 작성되어 정리되도록 하기 I)을 참조하시기 바랍니다.
이 버튼을 클릭하면 B2열과 B3열을 셀 병합하는데 B3열에 있는 내용이 지워지지 않고 그대로 남아 있게 병합하게 됩니다.
2. 버튼 클릭시 코드 입력하기
만든 '셀병합' 버튼을 선택한 상태에서 개발도구-코드 보기를 클릭합니다.
Visual Basic Editor 창이 출력되면서 아래와 같은 코딩이 되어 있습니다.
Private Sub CommandButton1_Click()
End Sub
버튼이 클릭될 때 코드가 실행되는 코딩입니다. 이제 셀 병합을 위해 아래와 같이 코드를 작성합니다.
Private Sub CommandButton1_Click()
Dim 셀개수 As Integer
Dim count As Integer
Dim s As String
Application.DisplayAlerts = False
On Error GoTo PGM_End
셀개수 = Selection.Cells.count
If 셀개수 = 1 Then
MsgBox "선택된 셀이 하나뿐입니다.", , "셀 선택"
Exit Sub
ElseIf Selection.Areas.count > 1 Then
MsgBox "Ctrl 키를 누른 상태에서 여러 셀을 선택하면 셀 병합이 불가능합니다.", , "셀 선택"
Exit Sub
End If
For count = 1 To 셀개수
If s = "" Then
s = Selection.Cells(count)
Else
s = s & " " & Selection.Cells(count)
End If
Next count
Selection.Merge
Selection = s
PGM_End:
If Err > 0 Then
MsgBox "작업 중에 에러가 발생하였습니다! 처음부터 다시 하세요!", , "셀 병합"
End If
End Sub
위의 코드 내용에 대해 설명드리자면,
처음에 정수형 변수 '셀개수'와 'count' 그리고, 문자열 변수 's'를 선언하였습니다.
'셀개수 = Selection.Cells.count'는 선택된 셀의 개수를 셀 개수에 입력하는 코드입니다.
아래 코드의 의미는 선택된 셀의 개수만큼 반복하여 문자열 변수 's'에 셀 내용을 입력하라는 코드입니다.
For count = 1 To 셀개수
If s = "" Then
s = Selection.Cells(count)
Else
s = s & " " & Selection.Cells(count)
End If
Next count
아래 코드의 의미는 선택된 셀을 병합하고 병합된 셀에 문자열 변수 's'에 입력되어 있는 데이터를 입력하라는 코드입니다.
Selection.Merge
Selection = s
모든 코드를 작성하였으면 Visual Basic Editor 창 메뉴에서 파일-닫고 Microsoft Excel(으)로 돌아가기를 클릭하여 엑셀 Sheet1 시트로 돌아갑니다.
[그림 1]에서 B2셀과 B3셀을 선택한 상태에서 '셀병합' 버튼을 클릭합니다.
그러면 셀이 병합되면서 B3셀의 내용이 지워지지 않고 그대로 표시되는 것을 보실 수 있습니다. ([그림 2] 참조)
'엑셀 > VBA' 카테고리의 다른 글
VBA 프로그래밍을 위한 기본 사항 확인하기 II (0) | 2021.08.14 |
---|---|
VBA 프로그래밍을 위한 기본 사항 확인하기 I (0) | 2021.08.13 |
VBA로 업체별 납품 품목 자동으로 작성되어 정리되도록 하기 II (0) | 2021.08.11 |
VBA로 업체별 납품 품목 자동으로 작성되어 정리되도록 하기 I (0) | 2021.08.11 |
VBA 사용자 정의 폼을 사용하여 원하는 폼 만들어보기 (0) | 2021.08.07 |