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) 파일이므로 처음 실행 시, 콘텐츠 사용 버튼을 눌러야 매크로가 정상 동작 합니다.
728x90
'■ 퇴근을 부르는 Excel > Excel VBA' 카테고리의 다른 글
[엑셀_VBA] 행 지정 범위 복사 후 아래 행에 붙여 넣기 반복하는 코드 (0) | 2023.04.13 |
---|