Excel 如何在更新日期时更改单元格的值?
在单元格“S1”中,我有今天得到的公式 我需要在更新此公式时,单元格“T3”的值自动返回到0。 在我测试的代码中,只有在我手动更改值时,它才起作用,但我需要它自动发生Excel 如何在更新日期时更改单元格的值?,excel,vba,Excel,Vba,在单元格“S1”中,我有今天得到的公式 我需要在更新此公式时,单元格“T3”的值自动返回到0。 在我测试的代码中,只有在我手动更改值时,它才起作用,但我需要它自动发生 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("S1")) Is Nothing Then Range("T3").Value = 0 End If End Su
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("S1")) Is Nothing Then
Range("T3").Value = 0
End If
End Sub
上面的代码发生在我手动更改单元格S1的日期时,但这不是我要查找的,因此我知道我需要在工作表计算事件中执行此操作,但我不知道代码。我设法以另一种方式执行此操作 我在工作簿中打开了这段代码,因此每当它打开时,都会取今天的日期并将其放入单元格
S2
Private Sub Workbook_Open ()
Sheets("Sheet1").Range("S2").Value = Date
End Sub
我在宏中编写的另一个代码使用了我放入的T3
单元格:
If Range("S1").Value <> Range("S2").Value Then
Range("T3").Value = 0
Range("S2").Value = Date
End If
如果范围(“S1”).值范围(“S2”).值,则
范围(“T3”)。值=0
范围(“S2”)。值=日期
如果结束
并且解决了它!谢谢大家的帮助 我设法用另一种方法做了 我在工作簿中打开了这段代码,因此每当它打开时,都会取今天的日期并将其放入单元格
S2
Private Sub Workbook_Open ()
Sheets("Sheet1").Range("S2").Value = Date
End Sub
我在宏中编写的另一个代码使用了我放入的T3
单元格:
If Range("S1").Value <> Range("S2").Value Then
Range("T3").Value = 0
Range("S2").Value = Date
End If
如果范围(“S1”).值范围(“S2”).值,则
范围(“T3”)。值=0
范围(“S2”)。值=日期
如果结束
并且解决了它!谢谢大家的帮助 工作表计算
- 如果您要手动或通过以下方式更改
中的值:S1
,则应使用VBA
工作表更改事件
- 如果单元格
中有公式,则可以使用S1
工作表计算事件
模块1
Option Explicit
Private Const SheetName As String = "Sheet1"
Private Const sCell As String = "S1"
Private Const tCell As String = "T3"
Private Const tValue As Long = 0
Private sValue As Date
Sub populateSrc()
sValue = ThisWorkbook.Worksheets(SheetName).Range(sCell).Value
MsgBox "Today's Date is '" & sValue & "'."
End Sub
Sub checkValue(WorksheetObject As Worksheet)
On Error GoTo cleanExit
Application.EnableEvents = False
If WorksheetObject.Range(sCell).Value <> sValue Then
WorksheetObject.Range(tCell).Value = tValue
sValue = WorksheetObject.Range(sCell).Value
End If
cleanExit:
Application.EnableEvents = True
End Sub
Option Explicit
Private Sub Workbook_Open()
populateSrc
End Sub
Option Explicit
Private Sub Worksheet_Calculate()
checkValue Me
End Sub
图纸模块,例如图纸1
Option Explicit
Private Const SheetName As String = "Sheet1"
Private Const sCell As String = "S1"
Private Const tCell As String = "T3"
Private Const tValue As Long = 0
Private sValue As Date
Sub populateSrc()
sValue = ThisWorkbook.Worksheets(SheetName).Range(sCell).Value
MsgBox "Today's Date is '" & sValue & "'."
End Sub
Sub checkValue(WorksheetObject As Worksheet)
On Error GoTo cleanExit
Application.EnableEvents = False
If WorksheetObject.Range(sCell).Value <> sValue Then
WorksheetObject.Range(tCell).Value = tValue
sValue = WorksheetObject.Range(sCell).Value
End If
cleanExit:
Application.EnableEvents = True
End Sub
Option Explicit
Private Sub Workbook_Open()
populateSrc
End Sub
Option Explicit
Private Sub Worksheet_Calculate()
checkValue Me
End Sub
工作表计算
- 如果您要手动或通过以下方式更改
中的值:S1
,则应使用VBA
工作表更改事件
- 如果单元格
中有公式,则可以使用S1
工作表计算事件
模块1
Option Explicit
Private Const SheetName As String = "Sheet1"
Private Const sCell As String = "S1"
Private Const tCell As String = "T3"
Private Const tValue As Long = 0
Private sValue As Date
Sub populateSrc()
sValue = ThisWorkbook.Worksheets(SheetName).Range(sCell).Value
MsgBox "Today's Date is '" & sValue & "'."
End Sub
Sub checkValue(WorksheetObject As Worksheet)
On Error GoTo cleanExit
Application.EnableEvents = False
If WorksheetObject.Range(sCell).Value <> sValue Then
WorksheetObject.Range(tCell).Value = tValue
sValue = WorksheetObject.Range(sCell).Value
End If
cleanExit:
Application.EnableEvents = True
End Sub
Option Explicit
Private Sub Workbook_Open()
populateSrc
End Sub
Option Explicit
Private Sub Worksheet_Calculate()
checkValue Me
End Sub
图纸模块,例如图纸1
Option Explicit
Private Const SheetName As String = "Sheet1"
Private Const sCell As String = "S1"
Private Const tCell As String = "T3"
Private Const tValue As Long = 0
Private sValue As Date
Sub populateSrc()
sValue = ThisWorkbook.Worksheets(SheetName).Range(sCell).Value
MsgBox "Today's Date is '" & sValue & "'."
End Sub
Sub checkValue(WorksheetObject As Worksheet)
On Error GoTo cleanExit
Application.EnableEvents = False
If WorksheetObject.Range(sCell).Value <> sValue Then
WorksheetObject.Range(tCell).Value = tValue
sValue = WorksheetObject.Range(sCell).Value
End If
cleanExit:
Application.EnableEvents = True
End Sub
Option Explicit
Private Sub Workbook_Open()
populateSrc
End Sub
Option Explicit
Private Sub Worksheet_Calculate()
checkValue Me
End Sub
您是否尝试过使用
工作表\u Calculate
事件?我尝试过,但我认为我做得不对,因为它不起作用。您能用它回答您的问题吗?S1
中的日期是如何自动更改的?是否有其他VBA代码更新了它?我没有代码了,而且速度变慢了。您是否尝试过使用工作表\u Calculate
事件?我尝试过,但我认为我做得不对,因为它不起作用。您能问一下这个问题吗?S1
中的日期是如何自动更改的?是否有其他VBA代码更新了它?我不再有这些代码了,另外它会减慢速度。这非常有效,比我的其他解决方案好得多,非常感谢!!这非常有效,比我的其他解决方案好得多,非常感谢!!