循环以检查工作簿何时关闭

时间:2018-01-05 09:05:30

标签: excel vba excel-vba

下面的代码检查特定列以查看它们的行是否具有相似的值。如果是,则在第57栏中将它们的值相加,如果总数小于100,则该单元格变为红色。如何在关闭工作簿时使此代码正常工作?我的意思是我希望循环仅在人们关闭Excel文件时才能工作。

我知道我必须在 Private Sub Worksheet_Change(ByVal Target As Range)中更改某些内容,但如果我这样做,那么代码将无法正常工作。要使代码生效,必须 Worksheet_Change 。或者我可以在按钮下调用此代码吗? 祝你有个美好的一天!

提前致谢!

Private Sub Worksheet_Change(ByVal Target As Range)


Dim TestRow As Integer
Dim TestColumn As Integer
Dim Sum As Integer


TestRow = Target.row
TestColumn = Target.Column

    If (TestColumn = 57) Then


        If (TestRow > 5) Then
            Sum = 0
            EColumnValue = 0
            FColumnValue = 0
            IColumnValue = 0
            APColumnValue = 0
            AQColumnValue = 0

            For i = TestRow To 5 Step -1

                If (i = TestRow) Then

                    Sum = ThisWorkbook.Sheets("Close").Cells(TestRow, 57).Value
                    EColumnValue = ThisWorkbook.Sheets("Close").Cells(TestRow, 4).Value
                    FColumnValue = ThisWorkbook.Sheets("Close").Cells(TestRow, 5).Value
                    IColumnValue = ThisWorkbook.Sheets("Close").Cells(TestRow, 8).Value
                    APColumnValue = ThisWorkbook.Sheets("Close").Cells(TestRow, 36).Value
                    AQColumnValue = ThisWorkbook.Sheets("Close").Cells(TestRow, 37).Value
                Else

                    If (EColumnValue = ThisWorkbook.Sheets("Close").Cells(i, 4).Value) And (FColumnValue = ThisWorkbook.Sheets("Close").Cells(i, 5).Value) And (IColumnValue = ThisWorkbook.Sheets("Close").Cells(i, 8).Value) And (APColumnValue = ThisWorkbook.Sheets("Close").Cells(i, 36).Value) And (AQColumnValue = ThisWorkbook.Sheets("Close").Cells(i, 37).Value) Then
                        Sum = Sum + ThisWorkbook.Sheets("Close").Cells(i, 57).Value

                        If Sum < 100 Then

                           ThisWorkbook.Sheets("Close").Cells(TestRow, 57).Interior.Color = RGB(255, 0, 0)


           Else
                           ThisWorkbook.Sheets("Close").Cells(TestRow, 57).Interior.Color = RGB(255, 255, 255)

                            End If


                    End If
                End If
           Next

        End If
    End If

1 个答案:

答案 0 :(得分:3)

项目浏览器Ctrl-R)中双击ThisWorkbook,然后从编辑器窗口将第一个下拉列表从(常规)切换到工作簿。然后,第二个下拉列表提供对工作簿级事件的访问。

从第二个下拉列表中选择BeforeClose以生成其过程存根。 (您可以删除Workbook_Open的空默认存根。)

BeforeClose没有为您提供Target参数,因为它与关闭无关。