请求修改VBA代码:实现30秒间隔新增数据行置顶(起始行33)
修改VBA代码实现最新记录插入第33行顶部
现有VBA代码每30秒将数据记录到FYRNIFTY工作表,当前逻辑是在已有数据下方追加新行。需要调整为:将包含A列时间戳的最新记录插入到第33行顶部,原有记录自动下移,数据记录起始位置为A列第33行。
修改后的完整代码
Sub LogValuesEvery30Seconds() Dim ws As Worksheet Dim targetRow As Long ' 指定目标工作表 Set ws = ThisWorkbook.Sheets("FYRNIFTY") targetRow = 33 ' 固定插入到第33行 ' 在第33行插入新行,原有行自动下移 ws.Rows(targetRow).Insert Shift:=xlDown ' 写入时间戳到A列目标行 ws.Cells(targetRow, "A").Value = Now() ' 写入各列计算后的数据 ws.Cells(targetRow, "B").Value = ws.Range("K13").Value - ws.Range("C13").Value ws.Cells(targetRow, "C").Value = ws.Range("K14").Value - ws.Range("C14").Value ws.Cells(targetRow, "D").Value = ws.Range("K15").Value - ws.Range("C15").Value ws.Cells(targetRow, "E").Value = ws.Range("K16").Value - ws.Range("C16").Value ws.Cells(targetRow, "F").Value = ws.Range("K17").Value - ws.Range("C17").Value ws.Cells(targetRow, "G").Value = ws.Range("K18").Value - ws.Range("C18").Value ws.Cells(targetRow, "H").Value = ws.Range("K19").Value - ws.Range("C19").Value ' 30秒后再次执行本过程,修正原代码的语法错误 Application.OnTime Now + TimeValue("00:00:30"), "LogValuesEvery30Seconds" End Sub
关键修改点
- 移除原代码中查找最后一行的逻辑,直接固定目标插入行为33
- 添加
Rows.Insert语句,在第33行插入空白行,原有数据自动下移 - 修正原代码中
Application.OnTime的语法缺失,补全需调用的过程名称字符串 - 所有数据写入操作直接指向第33行(插入新行后该行即为空白,无需再计算行号)
内容的提问来源于stack exchange,提问作者Mohammad Haneef Ahmad
相关产品推荐
相关产品推荐

