自动更新的是来自外部数据!外部数据,所以用每秒钟记录一次的方法!
Sub excute_record() '放在模块中
Cells(Rows.Count, "j").End(xlUp).Offset(1, 0).Value = Range("e3").Value 'e3是引用外部数据的单元格,J列是用于储存数据的。
Application.OnTime Now + TimeValue("0:00:01"), "excute_record" '用OnTime方法实现每秒执行一次
End Sub这是我给的思路,希望大神能给一个完整的代码方案!或者其它思路也可以,只要可以把自动更新的内容保存到一列即可!E3的内容是来自于外部并且不断更新的,希望把E3更新过的数据按顺序保存到J列
Ontime可以实现,但高频刷新太消耗内存了。
如果E3是通过公式计算,可以借鉴我之前一个Calculate事件的代码。
如果E3是获取外部数据,我没尝试过可不可用,或者Calculate改为Change?
首先在ThisWorkbook下插入代码:
'Sheets(1)改为你对应那个工作表
Private Sub Workbook_Open()
Public Temp As Variant
Temp = Sheets(1).[E3].Value
End Sub
再到对应工作表下插入代码:
Private Sub Worksheet_Calculate()
If [E3].Value <> Temp Then
Cells(Rows.Count, "j").End(xlUp).Offset(1, 0).Value = [E3].Value
End If
End Sub
追问大神代码呢?
追答代码修改在回答你试试看。
如果不能触发,我有个思路,可以用一个单元格公式比如E2=E3
这样你再把代码里面E3都改成E2
人呢?行不行吭气啊。
追问在床上睡觉呢!不知道可以不可以😄
追答额~好吧~加个关注好联系
追问大神这个可以
就是可不可以把最后出现的数字放到J列的最上面,现在是放到了下面
追答没搞懂你想法,不停刷新J列肯定是从上往下不停往最下面一行空格填入新数据。难道你要覆盖掉之前的数据?要不怎么填最上面?
追问可以了弄好了
还有,第一个代码根本不需要,只有第二个代码就好了!
追答嗯嗯,好的,谢谢关注
追问气死我了!卸载一个软件后,所有的表格都没有了!
本回答被提问者和网友采纳'vba change事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "E3" Then
Exit Sub '当单元格地址不为e3时退出过程
Else
Cells(Rows.Count, "j").End(xlUp).Offset(1) = [e3]
'否则把e3的值赋值给j列
End If
End Sub
我的意思是E3的数据是来自于外部,并且是不断更新的!如何把E3更新过的所有数据按顺序保存到J列