본문 바로가기

엑셀/VBA

VBA로 셀병합할 때 셀의 내용을 지우지 않고 병합하기

반응형

엑셀에서 셀 병합을 할 때 첫 번째 셀에 있는 내용만 남고 병합하는 나머지 셀에 있는 내용은 모두 지워집니다. 이를 지워지지 않고 내용 모두 살린 상태로 셀 병합을 할 수 있는 방법이 있으면 번거로운 작업이 단순해질 수 있을 것 같습니다. VBA로 이 작업이 가능하도록 할 수 있습니다. 이제부터 그 방법을 알아보겠습니다.

 

1. 버튼 만들기

 엑셀을 열고 새 워크시트를 만듭니다. 그리고, Sheet1 시트에서 버튼을 하나 만듭니다. 

버튼_만들기
[그림 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] 참조)

 

셀병합_결과
[그림 2] 셀병합 결과

 

반응형