请参阅下面的代码。我在 Workbook 模块中有“beforesave”代码,当我在活动工作表中时它工作正常。但是,从我在表 2 上使用的表中,我在表 1 上也有一个数据透视表。要刷新我的数据透视表,我使用了一个带有附加宏的插入按钮(这是在模块部分中)
Sub Refresh_Pivot()
'
' Refresh_Pivot Macro
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
ActiveWorkbook.Save
End Sub
在 Activate.Workbook.Save 上,它开始作用于我的其他代码(位于工作簿模块中),我希望这种情况发生,因为缺少数据的数据透视表不是一个好工具。但是,在使用它时,它默认会出现错误并突出显示 cell.Offset(0, 1).Select - 我该如何防止这种情况发生?
理想情况下,我希望用户在 msgbox 上选择 OK,然后屏幕页面变为 Sheet 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