下面的代码检查特定列以查看它们的行是否具有相似的值。如果是,则在第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
答案 0 :(得分:3)
在项目浏览器(Ctrl-R
)中双击ThisWorkbook,然后从编辑器窗口将第一个下拉列表从(常规)切换到工作簿。然后,第二个下拉列表提供对工作簿级事件的访问。
从第二个下拉列表中选择BeforeClose
以生成其过程存根。 (您可以删除Workbook_Open的空默认存根。)
BeforeClose
没有为您提供Target参数,因为它与关闭无关。