아래 코드를 참조하십시오. 통합 문서 모듈에 'beforesave'코드가 있는데 활성 시트에있을 때 제대로 작동합니다. 그러나 I는 시트 (2)에 사용하는 테이블 I는 I가 활성화에서 (이 모듈 부에) 부착 매크로Beforesave 이벤트에서 셀 선택
Sub Refresh_Pivot()
'
' Refresh_Pivot Macro
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
ActiveWorkbook.Save
End Sub
를 삽입 버튼을 사용하여 내 피벗을 새로 시트 (1)에 피봇 테이블을 갖는다. 통합 문서 모듈에있는 다른 코드에서 작동하기 시작한 Workbook.Save는 누락 된 데이터가있는 피벗 테이블이 좋은 도구가 아니기를 바랍니다. 그러나 이것을 사용하면 기본적으로 오류가 발생하고 cell.Offset (0, 1)을 강조 표시합니다. 선택 - 어떻게 이것을 방지 할 수 있습니까?
msgbox에서 OK를 선택하면 화면 페이지가 시트 2로 변경되고 문제가되는 셀이 강조 표시됩니다.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim esave As Range
Dim psave As Range
Dim jsave As Range
Dim RAll As Range
Dim cell As Range
Set esave = Sheet2.Range("Table1[Estimated Claim (USD)]")
Set psave = Sheet2.Range("Table1[Provisional Claim (USD)]")
Set jsave = Sheet2.Range("Table1[Agreed Claim (USD)]")
Set RAll = Union(esave, psave, jsave)
For Each cell In RAll
If cell.Value <> "" And cell.Offset(0, 1).Value = "" Then
Dim missdata
missdata = MsgBox("Missing Data - Enter the Date for WorkBook to Save", vbOKOnly, "Missing Data")
Cancel = True
cell.Offset(0, 1).Select
Exit For
End If
Next cell
End Sub
for 루프를 실행하기 전에 Sheet2.Activate를 추가해야합니다. –