[엑셀_VBA] 선택 영역 셀 값 쉼표(,)로 구분해 취합 후 복사하기 :: 영혼이 쉬어가는 그늘
728x90

1. 아래의 표에서 영역을 지정 후 [Copy] 버튼을 누르면 2.메세지 창에 선택한 영역의 값을 쉼표로 구분해 표기 후 클립 보드에 복사
3. 붙여넣기 시 메세지 창에서 보여준 값이 붙여넣기 됨 4. 동일한 열에 있으면 떨어져 있어도 정상 동작 함

하나의 열에 있는 셀의 값들을 지정 선택 후 [Copy] 버튼을 누르면 선택한 값들을 쉼표(,)로 구분해 한 줄로 표시할 수 있도록 함.

 

 

두 개 이상의 열에선 동작하지 않도록 방지

조건 1 : 동일한 열 내에서는 선택한 모든 셀의 값을 저장함 (즉, 연속된 셀이 아닌 떨어져 있는 셀의 값도 저장. 실행 결과 4 참조)

조건 2 : 동일한 열 이외의 다른 열의 셀 값을 저장하지 않도록 방지

 

 

Sub Copy버튼()

Dim rngList As Range
Dim varCnt As Long
Dim colCnt As Long
Dim i As Long
Dim j As Range
Dim varText As Variant
Dim objCP As Object

Set rngList = Selection.Cells()
varCnt = rngList.Cells.Count
colCnt = rngList.Columns.Count

If colCnt = 1 Then
    ReDim dateVa(varCnt - 1)
    For Each j In rngList
        dateVa(i) = j.Text
        i = i + 1
    Next j
    
    varText = Join(dateVa, ",")
    Set objCP = CreateObject("HtmlFile")
    objCP.ParentWindow.ClipboardData.SetData "text", varText
    MsgBox (Join(dateVa, ","))
Else
    MsgBox ("한 개 열로만 범위를 지정하세요")
End If

End Sub

 

Join 함수는 Split함수(문자열 나누기)와 반대로 문자열, 혹은 텍스트를 하나의 문자로 합쳐준다.

고로 Join(dateVa, ",") 은 dateVa 배열의 값들을 쉼표(,)로 구분해 하나의 문자로 합치라는 의미가 된다.

 

 

 

해당 파일은 매크로 사용 워크시트(.xlsm) 파일이므로 처음 실행 시, 콘텐츠 사용 버튼을 눌러야 매크로가 정상 동작 합니다.

 

VBA_002_선택 영역 셀 값 쉼표로 구분해 저장.xlsm
0.02MB

728x90

+ Recent posts