|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007): 2016
* 아래줄에 질문을 작성하세요 >>
안녕하세요. 한창 매크로 사용에 신세계를 느끼고 있는 초짜입니다.
블로그에서 갖다붙여넣기하면서 업무에 활용 중인데..
밑에 동일한 코드구문을 중복 적용해서 사용해보려고 하는데 작동이 안되네요.
완전 초보라 근본적인 문제를 이해하지 못하니 간단한 설명도 해주시면 감사하겠습니다!!
블로그상 보니 표준모듈이 아닌 시트 모듈에서 편집하라고 하네요.
우선 1개만 할 때는 잘 작동해서 변형 적용 중에 있습니다.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '한 셀 선택시만 매크로 작동
If Target.Address(0, 0) <> "E81" Then Exit Sub 'E81셀 변경시에만 매크로 작동
Dim strAddr As String '처음 검색하여 찾은 셀의 주소 넣을 변수
Dim rngC As Range '검색하여 찾은 영역을 넣을 변수
With ActiveSheet.UsedRange.Offset(81) '81행 제외한 전체영역에서
Set rngC = .Find(what:=Range("E81").Value, lookat:=xlPart)
'처음 일치하는 데이터를 찾아 rngC에 넣고
If Not rngC Is Nothing Then '만일 일치하는 셀이 있으면
Application.Goto Reference:=Range(rngC.Address), Scroll:=True
'찾은 셀을 화면 제일 왼쪽 위쪽에 위치
End If
End With
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '한 셀 선택시만 매크로 작동
If Target.Address(0, 0) <> "G81" Then Exit Sub 'G81셀 변경시에만 매크로 작동
Dim strAddr As String '처음 검색하여 찾은 셀의 주소 넣을 변수
Dim rngC As Range '검색하여 찾은 영역을 넣을 변수
With ActiveSheet.UsedRange.Offset(81) '81행 제외한 전체영역에서
Set rngC = .Find(what:=Range("G81").Value, lookat:=xlPart)
'처음 일치하는 데이터를 찾아 rngC에 넣고
If Not rngC Is Nothing Then '만일 일치하는 셀이 있으면
Application.Goto Reference:=Range(rngC.Address), Scroll:=True
'찾은 셀을 화면 제일 왼쪽 위쪽에 위치
End If
End With
End Sub
==============[하하파더님 글에 대한 답변입니다]==============
2개의 함수를 하나의 시트에 넣으시면 안됩니다. 말씀드린것 처럼 Worksheet_Change는 이벤트에 대한 이름이므로 Sheet 당 하나여야 합니다.
아래 코드 TEST는 안해 봤습니다. 참고하세요
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim strAddr As String
Dim rngC As Range
if Target.Address(0, 0) = "E81" Then
With ActiveSheet.UsedRange.Offset(81)
Set rngC = .Find(what:=Range("E81").Value, lookat:=xlPart)
If Not rngC Is Nothing Then
Application.Goto Reference:=Range(rngC.Address), Scroll:=True
End If
End With
endif
if Target.Address(0, 0) = "G81" Then
With ActiveSheet.UsedRange.Offset(81)
Set rngC = .Find(what:=Range("G81").Value, lookat:=xlPart)
If Not rngC Is Nothing Then
Application.Goto Reference:=Range(rngC.Address), Scroll:=True
End If
End With
endif
End Sub |
|