Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在更新日期时更改单元格的值?_Excel_Vba - Fatal编程技术网

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

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

在单元格“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的日期时,但这不是我要查找的,因此我知道我需要在工作表计算事件中执行此操作,但我不知道代码。

我设法以另一种方式执行此操作

我在工作簿中打开了这段代码,因此每当它打开时,都会取今天的日期并将其放入单元格
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代码更新了它?我不再有这些代码了,另外它会减慢速度。这非常有效,比我的其他解决方案好得多,非常感谢!!这非常有效,比我的其他解决方案好得多,非常感谢!!