2014-12-16 7 views
0

안녕하세요. 사전에 도움을 주셔서 감사합니다. 나는 VBA에 익숙하지 않으며 어떤 방법으로도 프로그래머가 아닙니다. 필드 변경 작업을 위해 VBA 코드를 가져올 수 있었지만 필드 변경이 수동으로 수행되지 않은 경우 트리거하지 않습니다.Excel/VBA - Worksheet_ 수동으로 필드를 변경했을 때만 실행

정확하게 사용한 사례는 Salesforce 및 매핑 된 필드의 타사 앱에 엑셀 매크로 북을 업로드 한 것입니다. 응용 프로그램이 필드 데이터를 보내 Excel에 성공적으로 변경하고 있지만 내 Worksheet_Change는 트리거하지 않습니다. 다음은 전체 코드입니다 (기본적으로 필드가 "True"로 변경 될 때 행을 표시합니다).

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$K$19" And Target.Value = "True" Then 

     Worksheets("Form").Activate 

      Sheets("Form").Rows("20").Select 
       If Selection.EntireRow.Hidden = True Then 
       Selection.EntireRow.Hidden = False 
       Else 
       Selection.EntireRow.Hidden = True 
       End If 

      Sheets("Form").Rows("41").Select 
       If Selection.EntireRow.Hidden = True Then 
       Selection.EntireRow.Hidden = False 
       Else 
       Selection.EntireRow.Hidden = True 
       End If 

      Sheets("Form").Rows("81:89").Select 
       If Selection.EntireRow.Hidden = True Then 
       Selection.EntireRow.Hidden = False 
       Else 
       Selection.EntireRow.Hidden = True 
       End If 

    End If 

End Sub 

내가 이해하는 바로는이 코드를 Worksheet_Calculate로 실행하는 것입니다. 누구든지이 문제에 대한 정보를 제공 할 수 있습니까? Worksheet_Calculates 또는 일반적으로 일반적인 이벤트에 익숙하지 않습니다.

다시 한번 감사드립니다.

+0

아마도 외부 프로그램에서 Application.EnableEvents = False를 사용하고 있습니다.이 이벤트는 변경 이벤트를 시작하지 못하도록합니다. –

+0

파일을 업로드 한 응용 프로그램이 자동화를 사용하여 통합 문서를 채우지 않고 (Microsoft에서 서버 환경에서 Office 자동화를 사용하여 다시 권장 함) 다른 라이브러리를 사용하여이 작업을 수행 할 수 있습니다. 이 경우 VBA가 실행되지 않으며 이벤트가 실행되지 않습니다. 잠재적 인 보안 함의를 고려할 때 사용자가 임의의 VBA를 자신의 환경에 업로드 할 수 있도록 허용하는 것은 어리석은 일입니다. –

+0

$ K $ 19가 변경된 경우에만 코드가 실행됩니다. 다른 셀이 변경되었을 때 실행하려면 'Intersect()'메소드를 사용하여 이벤트를 발생시키는 범위를 설정해야합니다. –

답변

1

는 두 개의 셀을 고려 Z100수동으로 새로 고침 다음 변경 이벤트가

  • Z100가 포함 된 경우 트리거 될 수있다 세포 Z100Z101

    1. 경우 말 a 공식 다음에 계산 이벤트를 트리거 할 수 있습니다. Z100는 외부 피드를 통해 갱신 된 값을 포함
    2. 경우 다음에 Z101 입력 =Z100계산 이벤트는 다음과 같은 트리거 될 수있다. Z100가 갱신됩니다 경우 때문입니다

    은 다음 Z101이 자동으로 계산되고 이벤트가 트리거됩니다!

  • +0

    게리의 설명을 통해 OP가 자신의 질문을 편집했다고 가정하기 때문에 게리의 대답을 확장하는 것입니다.Sub Worksheet_Change가 이미있는 워크 시트에서 간단히 프로 시저 이름을 Worksheet_Calculate로 변경하거나 vba 편집기 코드 창의 오른쪽 상단에있는 드롭 다운 목록에서 Calculate 이벤트 유형을 선택하여 새 계산 프로 시저를 작성하십시오 –