Excel 2013 에서이 질문 의 VB 코드를 사용하려고하는데 작동하지 않습니다. VB에 익숙하지 않으며 간단한 단계가 누락되었을 가능성이 큽니다.
Private Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "sheet1" Or UCase(Sh.Name) = "sheet2" Then
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1") = Target
Else
Sheets("Sheet1").Range("A1") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub
이름이 Sheet1 및 Sheet2 인 워크 시트와 함께 새 통합 문서를 사용하여 Visual Basic에서 다음을 시도했습니다.
- 코드를 객체에 붙여 넣기 : ThisWorkbook
- 코드를 개체에 붙여 넣기 : Sheet1 (Sheet1) 및 Sheet2 (Sheet2)
- 코드를 3 개의 객체 모두에 붙여 넣기
- 통합 문서가 매크로 사용으로 저장되어 있는지 확인
- 통합 문서 보안 설정이 VBA 개체 모델에 대한 액세스를 신뢰하도록 설정되고 매크로가 사용되도록 설정
이 코드를 실행하려면 어떻게해야합니까?
Mat 's Mug의 제안에 대한 답변 :
제안한대로 표준 모듈에 코드를 넣고 절차를 공개로 변경하고 범위를 수정했습니다. 그러나 여전히 한 시트의 범위에서 다른 시트로 값을 복사 할 수는 없습니다. 코드는 다음과 같습니다 :
Public Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "SHEET1" Or UCase(Sh.Name) = "SHEET2" Then
If Not Application.Intersect(Target, Range("A1:J23")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1:J23") = Target
Else
Sheets("Sheet1").Range("A1:J23") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub