열 및 탭 변경시 모든 워크 시트에서 Excel VBA 다시 계산


0

나는 매월 12 명씩 13 개의 워크 시트를 가지고 있습니다. 월 이름을 가진 12 장 각각에 셀이 있습니다.

현재 달이 셀과 일치하는지 테스트하고 그에 따라 탭 색상을 변경하는 VBA 스크립트를 얻었지만 업데이트 할 시트의 계산이 필요합니다.

Private Sub Worksheet_Change(ByVal Target As Range)
If Format(Date, "MMMM") = Range("E3").Value Then
    Me.Tab.ColorIndex = 10
Else
    Me.Tab.ColorIndex = xlColorIndexNone
End If
End Sub

지난 달의 시트를 업데이트하지 않고 다음 시트로 이동하면 이전 시트가 업데이트되지 않았기 때문에 두 탭이 모두 강조 표시됩니다. 나는 단지 현재 월 워크 시트를 강조하고 싶다.

통합 문서 열기 및 탭 변경시 모든 시트를 다시 계산할 수 있습니까?

답변:


0

에서 ThisWorkbook 그냥 넣어 모듈

Option Explicit

Private Sub Workbook_Open()
    Dim mySheet As Worksheet
    For Each mySheet In ThisWorkbook.Sheets
        If mySheet.Cells(3, 5).Value = Format(Date, "MMMM") Then
            mySheet.Tab.ColorIndex = 10
        Else: mySheet.Tab.ColorIndex = xlColorIndexNone
        End If
    Next
End Sub

이제는 아무 것도 계산할 필요가 없으며 열 때마다 모든 시트를 확인합니다.


0

예. VB 편집기에서 ThisWorkbook 개체로 이동하십시오. 코드 창의 맨 위에 "(일반)"또는 "통합 문서"라는 드롭 다운 상자가 나타납니다. "(일반)"이라고 표시되면 드롭 다운을 열고 대신 "통합 문서"를 선택하십시오. 즉시 새 하위 메뉴를 삽입 할 수 있습니다. 그럴 경우 삭제하십시오.

이제 오른쪽 상단에는 "열기"라고 표시된 다른 드롭 다운이 있습니다. 드롭 다운을 사용하여 "열기"를 선택한 다음 다시 "시트 활성화"를 선택하십시오. 이 코드는 두 개의 새로운 서브 루틴을 코드 창에 삽입해야합니다. Workbook_OpenSheet_Activate. 이름을 입력하는 것뿐만 아니라 드롭 다운을 사용하여 드롭 다운을 작성하려는 것입니다. 단순히 입력하면 제대로 작동하지 않을 수 있습니다.

이제 원하는 모든 코드를이 잠수함에 넣을 수 있으며 문제의 이벤트를 감지하면 코드가 실행됩니다 (예 : 통합 문서 열기 또는 워크 시트 선택). 요청한 정확한 구조는 다음과 같습니다.

Private Sub Workbook_Open()
    Application.Calculate
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.Calculate
End Sub

그렇게하는 것이 가장 효율적인 방법이라고 말하지는 않겠지 만, 그 질문에 대한 답을 찾아야합니다.


그러면 가장 효율적인 방법은 무엇입니까? 나는 당신이 단지 그것을 연결하고 싶다면 독서에 신경 쓰지 않는다.
gavsiu

또한 그것은 내 문제를 해결하지 않는 것 같습니다. 색상 탭을 변경하려면 시트의 셀을 편집해야합니다.
gavsiu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.