macros没有完全执行

所以我有以下的macros

Private Sub Worksheet_Change(ByVal Target As Range) BeginRow = 178 EndRow = 178 ChkCol = 8 For RowCnt = BeginRow To EndRow If IsError(Sheet1.Cells(RowCnt, ChkCol).Value) Then Sheet1.Cells(169, ChkCol).EntireRow.Hidden = True Sheet1.Cells(170, ChkCol).EntireRow.Hidden = True Sheet1.Cells(171, ChkCol).EntireRow.Hidden = True Sheet1.Cells(172, ChkCol).EntireRow.Hidden = True Sheet1.Cells(173, ChkCol).EntireRow.Hidden = True Sheet1.Cells(174, ChkCol).EntireRow.Hidden = True Sheet1.Cells(175, ChkCol).EntireRow.Hidden = True Sheet1.Cells(176, ChkCol).EntireRow.Hidden = True Sheet1.Cells(177, ChkCol).EntireRow.Hidden = True Sheet1.Cells(178, ChkCol).EntireRow.Hidden = True Sheet1.Cells(179, ChkCol).EntireRow.Hidden = True End If Next RowCnt For RowCnt = BeginRow To EndRow If Not IsError(Sheet1.Cells(RowCnt, ChkCol).Value) Then Sheet1.Cells(169, ChkCol).EntireRow.Hidden = False Sheet1.Cells(170, ChkCol).EntireRow.Hidden = False Sheet1.Cells(171, ChkCol).EntireRow.Hidden = False Sheet1.Cells(172, ChkCol).EntireRow.Hidden = False Sheet1.Cells(173, ChkCol).EntireRow.Hidden = False Sheet1.Cells(174, ChkCol).EntireRow.Hidden = False Sheet1.Cells(175, ChkCol).EntireRow.Hidden = False Sheet1.Cells(176, ChkCol).EntireRow.Hidden = False Sheet1.Cells(177, ChkCol).EntireRow.Hidden = False Sheet1.Cells(178, ChkCol).EntireRow.Hidden = False Sheet1.Cells(179, ChkCol).EntireRow.Hidden = False End If Next RowCnt End Sub 

你可能做得更漂亮些,但是我对VBA来说还是比较新的。 公式H178具有以下input:

 `=(H170+H171+H172+H173+H174+H175+H176+H177)/7` 

然而,这些单元格H170,H171等从Sheet2获得它们的数据。也就是说,当H170出错时,H178给出#REF! 这应该自动意味着macros运行,但它不,除非我双击单元格H178,然后回车。

但是,如果我即直接改变单元格H170 sheet1,= 5/0(这给出了错误)然后macros运行。

我究竟做错了什么?

您应该将此代码放在Worksheet_Calculate事件中,以便在错误通过时重新计算