【问题标题】:Apply Worksheet_Change, to cell updated by Python code, to copy the updated cell data to another worksheet将Worksheet_Change应用于Python代码更新的单元格,将更新后的单元格数据复制到另一个工作表
【发布时间】: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 写入数据,它还需要将数据写入您的“历史”表。

标签: python excel vba


【解决方案1】:

让我发表我的评论作为答案:

Worksheet_Change-事件被触发只要如果数据在 Excel(程序本身)中被修改,要么是因为用户键入,要么是因为 VBA 代码将某些内容写入一个或多个单元格。

如果您通过 Python(或任何其他程序)编写它,则无法触发它。 Python 不打开(应用程序)Excel,因此没有可用的 VBA 环境。 VBA 需要它的主机程序(在你的情况下是 Excel)才能运行。如果 Python 写入数据,它还需要将数据写入您的“历史”表。

反之亦然:您有一个文本文件(或任何其他文件)。如果您使用 Excel/VBA 将某些内容写入此文件,您不能指望一段 Python 代码会自动运行并对数据执行某些操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多