문제

할 수 있는 방법을 자동으로 실행 Excel 매크로 각 시간에 값에서 특정 세포의 변화는?

지금,내 일 코드:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H5")) Is Nothing Then Macro
End Sub

"H5" 은 특정한 세포는 모니터링 Macro 의 이름은 매크로입니다.

은 더 나은 방법이 있을까?

도움이 되었습니까?

해결책

코드 꽤 좋아 보인다.

그러나,주의,에 대한 귀하의 전화 Range("H5") 은 바로 가기를 명령하기 Application.Range("H5"), 에 해당하는 Application.ActiveSheet.Range("H5").이로 사용할 수 있습니다.는 경우에만 변경 내용은 사용자로 변경-는 가장 일반적인--그러나 그것은 가능한 워크시트의 휴 값을 변경하지 않을 때 활성 시트를 통해 프로그래밍 방식의 변경,예를 들어,VBA.

이 마음으로,저는 것을 활용 Target.Worksheet.Range("H5"):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("H5")) Is Nothing Then Macro
End Sub

거나 사용할 수 있습니다 Me.Range("H5"), 는 경우,이벤트 처리기 코드 페이지에서 워크시트에 대해서 질문(일반적으로):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("H5")) Is Nothing Then Macro
End Sub

희망이는 데 도움이...

다른 팁

처리 Worksheet_Change 이벤트 또는 Workbook_SheetChange 이벤트.

이벤트 핸들러는 "범위로 대상"인수를 취하므로 변경되는 범위에 관심있는 셀이 포함되어 있는지 확인할 수 있습니다.

나는 셀을 사용하는 것이 아니라 범위를 사용하는이 방법을 선호합니다.

    Dim cell_to_test As Range, cells_changed As Range

    Set cells_changed = Target(1, 1)
    Set cell_to_test = Range( RANGE_OF_CELLS_TO_DETECT )

    If Not Intersect(cells_changed, cell_to_test) Is Nothing Then 
       Macro
    End If

나는 이벤트 트리거를 실제로 엉망으로 만든 후 이것을 연구하고 모든 것이 어떻게 작동하는지 배우는 데 많은 시간을 보냈습니다. 흩어진 정보가 너무 많았 기 때문에 나는 한 단계에서 다음과 같이 단계별로 작동하는 것을 공유하기로 결정했습니다.

1) VBA Editor, VBA 프로젝트 (YourWorkBookName.xlsm)에서 VBA 편집기를 엽니 다. Microsoft Excel 개체를 열고 변경 이벤트가 관련된 시트를 선택하십시오.

2) 기본 코드보기는 "일반"입니다. 상단 중간의 드롭 다운 목록에서 "워크 시트"를 선택하십시오.

3) Private Sub Worksheet_SelectionChange는 이미 그대로 있어야합니다. 위에서 Mike Rosenblum의 코드를 복사/붙여 넣고 변경 사항을보고있는 셀에 대한. 정렬 참조 (B3, 내 경우). 그러나 당신의 매크로를 아직 배치하지 마십시오.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
End Sub

또는 왼쪽 상단의 드롭 다운 목록에서 "변경"을 선택하고 개인 서브와 엔드 서브 사이의 공간에서 페이스트 If Not Intersect(Target, Me.Range("H5")) Is Nothing Then

4) "그런 다음"이벤트를 끄면 이벤트를 끄면 매크로를 호출 할 때 이벤트를 트리거하지 않고이 워크 시트 _change를 다시 실행하려고 시도하지 않습니다.

Application.EnableEvents = False

5) 매크로에 전화하십시오

Call YourMacroName

6) 이벤트를 다시 켜서 다음 변경 (및 기타 모든 이벤트) 트리거 :

Application.EnableEvents = True

7) IF 블록과 서브를 종료하십시오.

    End If
End Sub

전체 코드 :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
        Application.EnableEvents = False
        Call UpdateAndViewOnly
        Application.EnableEvents = True
    End If
End Sub

이를 통해 모듈에서 이벤트를 켜거나 끄는 데 문제를 일으키고 단순히 변경 트리거를 만들고 이벤트를 끄고 매크로를 실행하며 이벤트를 다시 켜십시오.

온라인 주식 데이터베이스에 연결되어 자주 업데이트되는 셀이 있습니다. 셀 값이 업데이트 될 때마다 매크로를 트리거하고 싶습니다.

나는 이것이 프로그램이나 외부 데이터 업데이트에 의한 셀 값 변화와 유사하다고 생각하지만 위의 예는 어떻게 든 나에게 효과가 없다고 생각합니다. 문제는 Excel 내부 사건이 유발되지 않기 때문에 문제가 있다고 생각합니다.

나는 다음을했다.

Private Sub Worksheet_Change(ByVal Target As Range) 
  If Not Intersect(Target, Target.Worksheets("Symbols").Range("$C$3")) Is Nothing Then
   'Run Macro
End Sub
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top