Скопируйте следующее в ваш ThisWorkbook
объект, чтобы следить за конкретными изменениями. В этом случае при увеличении числового значения до другого числового значения.
Примечание: вам придется заменить Workbook-SheetChange
и Workbook-SheetSelectionChange
на подчеркивание. Например: Workbook_SheetChange
и Workbook_SheetSelectionChange
подчеркивание подчеркивается в коде Markdown.
Option Explicit
Dim varPreviousValue As Variant ' required for IsThisMyChange() . This should be made more unique since it's in the global space.
Private Sub Workbook-SheetChange(ByVal Sh As Object, ByVal Target As Range)
' required for IsThisMyChange()
IsThisMyChange Sh, Target
End Sub
Private Sub Workbook-SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' This implements and awful way of accessing the previous value via a global.
' not pretty but required for IsThisMyChange()
varPreviousValue = Target.Cells(1, 1).Value ' NB: This is used so that if a Merged set of cells if referenced only the first cell is used
End Sub
Private Sub IsThisMyChange(Sh As Object, Target As Range)
Dim isMyChange As Boolean
Dim dblValue As Double
Dim dblPreviousValue As Double
isMyChange = False
' Simple catch all. If either number cant be expressed as doubles, then exit.
On Error GoTo ErrorHandler
dblValue = CDbl(Target.Value)
dblPreviousValue = CDbl(varPreviousValue)
On Error GoTo 0 ' This turns off "On Error" statements in VBA.
If dblValue > dblPreviousValue Then
isMyChange = True
End If
If isMyChange Then
MsgBox ("You've increased the value of " & Target.Address)
End If
' end of normal execution
Exit Sub
ErrorHandler:
' Do nothing much.
Exit Sub
End Sub
Если вы хотите изменить другую рабочую книгу на основе этого, я бы подумал о том, чтобы проверить, открыта ли рабочая книга в первую очередь ... или даже лучше разработать решение, которое может объединить все ваши изменения и сделать их по один раз. Постоянное изменение другой таблицы на основе того, что вы ее слушаете, может быть болезненным.