상세 컨텐츠

본문 제목

특정 셀값 변경시 다른 시트로 복사 worksheet_change를 이용한 셀 복사

IT 컴퓨터/엑셀

by noonwith 2020. 12. 20. 14:25

본문

반응형

특정 셀값이 갱신 될때 엑셀 시트에 들어올때 일반적으로 시간을 제어하여 다른 시트에 복사 후 사용합니다.

지난 글의 댓글을 보면 데이터가 갱신될때에만 복사 되는 코드가 필요한 경우가 있는것 같은데요, 데이터 갯수가 너무 많다면 권장하지 않습니다. 

엑셀 성능이 정말 느려질 수 있습니다.

특정 시트의 셀 또는 현재 열려 있는 시트에 갱신되는 값이 있을 때만 호출되는 매크로를 만드는 방법입니다.
 
 1. 시트하나(Sheet1) 열고 데이터 변경할 셀위치을 정하세요.
 2. Sheet2를 만듭니다.
 3. 개발도구/Visual Basic 에디터를 엽니다.
 4. VBAProject의 Sheet1를 클릭합니다.

 

dde copy


 5. 아래코드를 복사하여 붙여넣습니다.

 

'코드시작

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

' DDE 값 위치 변경하세요
    Set KeyCells = Range("A2:E2")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

'갱신되는 셀을 선택하세요 예 C2
      If Target.Address = "$C$2" Then Call Copy2cell

End If
End Sub

 

Public Sub Copy2cell()

DoEvents '단축키 등 이벤트 활용시 사용하세요

With Sheets("Sheet2").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)

.Value = Format(Now(), "hh:mm")

.Offset(0, 1).Value = Sheets("Sheet1").Range("A2").Value

.Offset(0, 2).Value = Sheets("Sheet1").Range("B2").Value

.Offset(0, 3).Value = Sheets("Sheet1").Range("C2").Value

.Offset(0, 4).Value = Sheets("Sheet1").Range("D2").Value

End With

End Sub

'코드 끝

 

 6. [파일] 메뉴에서 닫고 Microsoft Excel로 돌아가기를 클릭합니다.
 7. 언제든지 Visual Basic 에디터를 다시 열고 수정할 수 있습니다.

시간제어가 들어간 DDE 데이터 복사는 이전글을 참고하세요. 
이전글 댓글에도 기본적인 코드를 답변해드렸습니다.

반응형

관련글 더보기

댓글 영역