繁体   English   中英

更新日期时如何更改单元格的值?

[英]How to make the value of a cell change when the date is updated?

在单元格“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 Sub

上面的代码发生在我手动更改单元格 S1 的日期时,但这不是我要寻找的,所以我知道我需要在 Worksheet Calculate 事件中执行此操作,但我不知道代码。

我设法以另一种方式做到了!

我在 Workbook 中打开了这段代码,这样每当它打开时,它就会获取今天的日期并将其放入单元格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中的值或通过VBA写入,则应使用Worksheet Change event
  • 如果单元格S1中有公式,则可以使用Worksheet Calculate event

标准模块,例如Module1

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

ThisWorkbook

Option Explicit

Private Sub Workbook_Open()
    populateSrc
End Sub

工作表模块,例如Sheet1

Option Explicit

Private Sub Worksheet_Calculate()
    checkValue Me
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM