macros来存储RTD数据
我已经写了这个简单的代码,我发现使用Excelmacros 。
Private Sub Macro3(ByVal Target As Range) If Not Intersect(Target, Range("A2:A2")) Is Nothing Then Application.EnableEvents = False Range("A3:A31").Value = Range("A2:A30").Value Application.EnableEvents = True End If End Sub
但创build后,我无法findmacros,也不能通过VBA编辑器运行它。 请帮助我。 我正在使用ms office 2010
编辑
我真正想要实现的。
我的表格A1单元格的价值不断变化。 只要它改变,我希望它被复制到A2和A2的价值A3等等…
video01:00解释,
-
代码必须放置在Sheet1(或用于捕获服务器数据的工作表)中,这意味着您必须在VBA的左上angular项目浏览器窗格中双击工作表的名称以访问其代码窗口
-
您必须完全按照Youtube上所示使用Sub()的名称…
Private Sub Worksheet_Change(ByVal Target As Range)
。 您可以手动input代码,也可以从代码窗口上方的select框中select“工作表”和“更改”。 当你select“Worksheet”(包括End Sub
)时,删除最终被自动创build的“Sub Selection_Change”Sub这确保了每当工作表中的一个单元(=任意)改变时,macros就被触发。 -
If Not Intersect(...)
在意只有某个单元格的更改由其他代码处理 -
如果您在第一行设置断点 –
Private Sub ...
– 使用debugging/切换断点或{F9} – 您将能够使用{F8}单步执行代码并观看
编辑:
一些谷歌search后… =RTD()
不会触发更改macros(许多令人失望) – 所以需要不同的策略。
=RTD()
不时地(时间间隔X =RTD()
获取数据,并将其放入与当前[A2]不同的单元格C中。 你可以创build一个代码块来执行每个X / 2并检查是否C <> [A2] …如果是将C移动到[A2]并将旧值复制下来。
例:
创build一个“TimerFunctions”模块并添加此代码
Public IsTimer As Boolean Sub TimerSet(IntervalSec As Date, TimerProcName As String) If IsTimer Then Application.OnTime Now() + IntervalSec, TimerProcName, , True End Sub Sub TimerAction() ' look for new value ... eg compare RTD cell [A1] with last stored value [A2] If [A2] <> [A1] Then ' your original code - move whole stack one down Range("A3:A31").Value = Range("A2:A30").Value ' copy new value on top of stack [A2] = [A1] End If ' do it again in 2 seconds TimerSet TimeValue("00:00:02"), "TimerAction" End Sub
工作表Sheet1
Private Sub Worksheet_Activate() IsTimer = True TimerSet TimeValue("00:00:02"), "TimerAction" End Sub Private Sub Worksheet_Deactivate() IsTimer = False End Sub
现在每隔2秒检查一次RTDfunction是否有新值,如果发现该值保存在堆栈的顶部,而剩下的30则被按下1。 这工作尽快,只要你在工作表中。 如果更改为Sheet2(=取消激活Sheet1),则此机制将停止,直到您返回到Sheet1(=激活工作表)。
如果这个计时的事情应该一直运行,那么你必须付出更多的努力来处理你的细胞,这样即使工作表是另一个工作表,所有这些工作都是有效的。
你也可以尝试通过实现下面的macros
Sub Macro() Dim n As Integer n = 1 Do Application.EnableEvents = False Range("A2").EntireRow.Insert Range("A2").Value = Range("A1").Value Application.Wait Now + TimeValue("0:00:10") Application.EnableEvents = True Loop Until n != 1 End Sub
现在应该能够以定期的时间间隔存储数据列虎钳。