- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在寻找答案时遇到了一些问题。
在 Sheet1 中,我有一系列单元格(“A4:Q4”),它们都具有特定的 RTD 函数,它们从外部程序收集实时库存数据。这些单元格每隔几秒钟更新一次,具体取决于父程序的更改。
我想要做的是,每次该范围内的任何值发生变化时(即每次 RTD 值更新),复制该范围的值并将它们粘贴到 Sheet2 中下一个可用的空行。这应该有效地创建一长串值,但我遇到了 RTD 的问题。我当前的代码会做我想做的事,但前提是手动更改范围内的值,而不是在更新 RTD 值时。即使 RTD 值正在更新/更改,如果有意义的话,它也不会将这些新值复制到 Sheet2。这似乎与宏没有意识到值会自动变化有关。当我对该范围内的值进行自己的更改时,它可以工作,但这会使单元格中的 RTD 函数变得无用。
这是我所拥有的:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Worksheets("Sheet1").Range("A4:Q4")
' Wait for change to happen...
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' once change happens, copy the range (yes keep R4 value too)
ThisWorkbook.Worksheets("Sheet1").Range("A4:R4").Copy
' Paste it into the next empty row of Sheet2
With ThisWorkbook.Worksheets("Sheet2")
Dim NextRow As Range
Set NextRow = ThisWorkbook.Worksheets("Sheet2").Range("A" & .UsedRange.Rows.Count + 1)
NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
Application.CutCopyMode = False
End With
End If
End Sub
最佳答案
如评论中所述,当单元格由于公式重新计算而更改值时,不会触发 Worksheet.Change 事件。因此,您可以使用 Worksheet.Calculate 事件。
与 Worksheet.Change 事件不同,没有 Target
在 Worksheet.Calculate 事件中。您可以使用以下方法测试特定范围内的单元格是否已重新计算:
ThisWorkbook
代码模块:Private Sub Workbook_Open()
PopulateKeyValueArray
End Sub
Sheet1
代码模块:Private Sub Worksheet_Calculate()
On Error GoTo SafeExit
Application.EnableEvents = False
Dim keyCells As Range
Set keyCells = Me.Range("A4:Q4")
Dim i As Long
For i = 1 To UBound(KeyValues, 2)
If keyCells(, i).Value <> keyValues(1, i) Then
Dim lastRow As Long
With Sheet2
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Range("A" & lastRow & ":R" & lastRow).Value = Me.Range("A4:R4").Value
End With
Exit For
End If
Next i
SafeExit:
PopulateKeyValueArray
Application.EnableEvents = True
End Sub
Public keyValues()
Public Sub PopulateKeyValueArray()
keyValues = Sheet1.Range("A4:Q4").Value
End Sub
keyValues
是
Public
用
keyCells
中的值填充的数组当工作簿首次打开时。
Sheet1
中的公式重新计算导致任何单元格发生变化时,
keyCells
中的值与
keyValues
中的相应元素一一比较.如果存在差异,即
keyCells
中的单元格已更新,则
A4:R4
中的最新值被写入
Sheet2
中的下一个可用行.
Exit For
确保此值传输仅发生一次,即使多个单元格已更改。最后,
keyValues
使用
keyCells
中的最新值进行更新.
PopulateKeyValueArray
从
Sheet1:Range("A4:Q4")
读取值进入
keyValues
大批。
keyValues
首次将代码添加到工作簿时将为空,因此要么保存并重新打开,要么运行
PopulateKeyValueArray
填充数组。
关于excel - 在另一个工作表中记录 'RTD' 值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622486/
我在寻找答案时遇到了一些问题。 在 Sheet1 中,我有一系列单元格(“A4:Q4”),它们都具有特定的 RTD 函数,它们从外部程序收集实时库存数据。这些单元格每隔几秒钟更新一次,具体取决于父程序
我正在尝试将 RTD 服务器嵌入到预先存在的 C# 应用程序中。 Microsoft 文档声明“RTD 服务器可以作为 ActiveX DLL 或 作为 .exe 存在,在同一台本地计算机 或远程服务
当数据从 C4:C7 列的范围呈现时,此代码可以正常工作,但是我的工作表是使用 C4:K4 的一行中的数据设置的。我不能得到一行而不是一列来解决。有什么帮助吗?谢谢 . Sub RecordData(
我想更改 Read the Docs theme 的背景颜色对于狮身人面像文档。 主题是使用 sass 编写的,我找到了没有定义的变量 $section-background-color。 如果我在元
我订阅了一个单元格,所以当我将公式放入单元格时,它会正确更新。 现在,我要返回一个具有多个值的对象,并且我想在 Excel 单元格中显示所有这些值。是否可能只在 1A 中放入一个公式,订阅一次,一次获
我在 C# 中为 Excel 创建了一个 RTD 服务器,它不断地用数据更新单元格并且需要使用多个 Excel 实例。问题是,如果我在多个 Excel 实例中有相同的 RTD 公式,并且我删除了其中一
我在向我的 Sphinx .html 文件添加自定义页脚时遇到了一些问题。我正在使用 sphinx_rtd_theme。我检查过这个 post并尝试过(以及评论中的一些建议)但无济于事。我不确定我错过
我订阅了一个 RTD 金融应用程序,可以选择通过 DDE 将实时数据导出到 Excel。因此,使用 DDE 复制/粘贴应用程序选项,我创建了一个包含实时 DDE 财务数据的 Excel 表。单元格实际
我的目标是在 python 中获取 rtd 服务器的更新 我在 excel 中进行了以下调用,该调用正在运行: =RTD("xrtd.xrtd";;"EUCA") 对于 python,我发现了以下客户
我只是从 zeromq 开始。我现在有各种平台/语言可以很好地相互交谈,我必须承认 - 它做得非常好。 我想做的最后一 block 拼图是(作为标题)。很简单,在excel中创建一个单元格 =RTD(
我有一个以编程方式生成的 sphinx-doc 源,它使用 Read-The-Docs 主题。源树看起来像: source ├── conf.py ├── index.rst ├── models │
我想在 Sphinx RTD 网站上每个页面的顶部添加一个简单的警告指令: .. attention:: The next major release of this project will l
全部, 这是对我的问题 here 的跟进. 我的设置: Visual Studio 10 C#语言 Excel 2007+ Windows XP+ 我想实现的是: 使用自定义功能区组件和自定义任务 P
我们构建了一个 .NET COM/Excel RTD 服务器(.NET 程序集),该服务器已在各种机器上使用多年(即我们知道它可以工作,并且我们的标准安装方法也可以工作)。我们有一个用户在另一台机器上
我想用 C++ 编写一个 excel RTD 服务器,但除了这个 http://weblogs.asp.net/kennykerr/archive/2008/12/02/Rtd5.aspx 之外还没有
我有 excelRTDserver.py通过将 EXCEL_TLB_MINOR 值更改为 7,在 Excel 2010(32 位)中启动并运行。我可以在加载项列表中看到服务器,如果我在单元格中输入 =
我已经创建了 Excel RTD 服务器,在 Debug模式下完成所有实现之后,我能够运行 RTD 并且它工作正常。但是,当我在 Release模式下获取 dll 并将其带到另一个系统,并使用“reg
在每个 Excel DNA RTD 示例中,RTD 服务器实现。被标记为 COM 可见。示例:https://github.com/Excel-DNA/Samples/blob/master/RtdC
在 Firebase 实时数据库中,这是一个非常常见的事务性事物 “表”A - 将其视为“待定” “表格”B - 将其视为“结果” 某些状态发生了,您需要将一个项目从 A 移动到 B。 所以,我当然是
我有一个 C# RtdServer,它从 TCPListener 接收数据更新。它按预期运行,除了在某些时候它仍然有事件 RTD() 在工作表 ServerTerminate() 被调用时,我似乎无法
我是一名优秀的程序员,十分优秀!