Private Sub Workbook_Open() Dim Sh As Worksheet Dim Hy, Vy, V$, H$, x%, y%, k%, i% For Each Sh In ThisWorkbook.Sheets k = k + 1 With Sh If .Cells(.[b65536].End(xlUp).Row, 2) = 0 Then H = H & "+" & k Else V = V & "+" & k End If End With Next Hy = Split(H, "+") Vy = Split(V, "+") x = UBound(Hy) y = UBound(Vy) If y > 0 Then '合计项有大于0的表 For i = 1 To y Sheets(Vy(i)).Visible = xlSheetVisible Next For i = 1 To x Sheets(Hy(i)).Visible = xlSheetHidden Next Else '合计项全部为0,保留最后一个表 Sheets(k).Visible = xlSheetVisible For i = 1 To k - 1 Sheets(i).Visible = xlSheetHidden Next MsgBox "所有工作表合计项均为0,保留最后一个工作表!", vbOKOnly End If End Sub
Private Sub Workbook_Open() Dim Sh As Worksheet Dim Hy, Vy, V$, H$, x%, y%, k%, i% For Each Sh In ThisWorkbook.Sheets k = k + 1 With Sh If .Cells(.[b65536].End(xlUp).Row, 2) = 0 Then H = H & "+" & k Else V = V & "+" & k End If End With Next Hy = Split(H, "+") Vy = Split(V, "+") x = UBound(Hy) y = UBound(Vy) If y > 0 Then '合计项有大于0的表 For i = 1 To y Sheets(Vy(i)).Visible = xlSheetVisible Next For i = 1 To x Sheets(Hy(i)).Visible = xlSheetHidden Next Else '合计项全部为0,保留最后一个表 Sheets(k).Visible = xlSheetVisible For i = 1 To k - 1 Sheets(i).Visible = xlSheetHidden Next MsgBox "所有工作表合计项均为0,保留最后一个工作表!", vbOKOnly End If End Sub