【发布时间】:2022-12-26 01:11:15
【问题描述】:
我有以下脚本来获取工作表上单元格 F60 中动态变化的数据。这是一个不断变化的股票价格。此数据由 Python 代码获取并且正在运行。
每次更改时,我都需要将此 F60 数据记录在同一工作簿中的另一张纸上,而不删除以前记录的数据。
当我在 F60 中手动输入值时,我会在目标工作表上一一看到所有这些值。
如果数据自动更新(通过 Python 代码),我看到的是时间戳而不是数据。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("F60")) Is Nothing Then
Dim x
Dim NR As Long
With Application
.EnableEvents = False
x = Target.Value
On Error Resume Next
With Sheets("Sheet2")
NR = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & NR).Value = Now
.Range("B" & NR).Value = x
End With
On Error GoTo 0
.EnableEvents = True
End With
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
【问题讨论】:
-
Worksheet_Change-事件被触发只要如果数据在 Excel(程序本身)中被修改,要么是因为用户键入,要么是因为 VBA 代码将某些内容写入一个或多个单元格。如果您通过 Python 编写它,则无法触发它。 Python 不打开(应用程序)Excel,因此没有可用的 VBA 环境。如果 Python 写入数据,它还需要将数据写入您的“历史”表。