【问题标题】:Keep results of last run of the day only仅保留当天最后一次运行的结果
【发布时间】:2021-01-21 19:21:20
【问题描述】:

我的目标是制作一个脚本,每次按下按钮时都会刷新我的投资价值,然后将日期和投资价值发布到另一张纸上。

我管理了以下代码。

Sub Refresh()
    ActiveWorkbook.RefreshAll
    ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Value = Date
    Worksheets("Portfolio").Range("B3").Copy
    ActiveSheet.Range("B1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End Sub

如果我多次点击按钮,我只想保留当天的最后一个条目。

我的想法是用if else 解决它,但它忽略了if

Sub Refresh()
    ActiveWorkbook.RefreshAll
    If ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Value = ActiveSheet.Range("A1").End(xlDown).Value Then
        Worksheets("Portfolio").Range("B3").Copy
        ActiveSheet.Range("B1").End(xlDown).PasteSpecial Paste:=xlPasteValues
    Else
        ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Value = Date
        Worksheets("Portfolio").Range("B3").Copy
        ActiveSheet.Range("B1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End If
End Sub

【问题讨论】:

  • 你的意思是如果你按两次按钮,你只想保留最后一个条目?
  • 是的,我只想保留当天的最后一个条目。

标签: excel vba


【解决方案1】:

更新工作表

  • 如果您没有按钮或其他控件可在ActiveSheet 上运行Refresh,我强烈建议您像定义Protfolio 一样定义它。
  • 如果代码在ActiveWorkbook中,你一定要使用 ThisWorkbook 而是指包含此内容的工作簿 代码。

守则

Option Explicit

Sub Refresh()
    
    ' Define workbook ('wb').
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    ' Do.
    wb.RefreshAll
    
    ' Define Target Worksheet ('tgt').
    Dim tgt As Worksheet
    Set tgt = wb.ActiveSheet
    
    ' Define Old Date Cell ('cel').
    Dim cel As Range
    Set cel = tgt.Range("A1").End(xlDown)
    
    ' Check if Old Date Cell does not contain today's date.
    If cel.Value <> Date Then
    ' Does not contain today's date:
        ' Define New Date Cell ('cel'), the cell below Old Date Cell.
        Set cel = cel.Offset(1, 0)
        ' Write today's date to New Date Cell.
        cel.Value = Date
    Else
    ' Does contain today's date:
        ' Do nothing because Old Date Cell is becoming New Date Cell.
    End If
    
    ' Define Source Worksheet ('src').
    Dim src As Worksheet
    Set src = wb.Worksheets("Portfolio")
    
    ' Write value from Source Cell to Target Cell.
    ' (Source Cell is next to New Date Cell).
    cel.Offset(0, 1).Value = src.Range("B3").Value

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多