Excel VBA需求:自动记录公式重算结果至另一工作表连续行
解决方案
适合的事件:Worksheet_Calculate
因为Worksheet_Change仅在单元格手动编辑或外部链接更新时触发,随机公式重算导致的结果变化不会触发该事件。而Worksheet_Calculate会在**工作表完成任何计算(包括随机函数重算)**后自动触发,完全匹配你的需求。
修改后的代码
将原代码替换为以下内容,直接写入Sheet1的代码模块中:
Private Sub Worksheet_Calculate() Dim ws As Worksheet Dim lastRow As Long Set ws = Sheets("Sheet5") ' 找到Sheet5 A列最后一个非空单元格的行号 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 如果A列是空的(首次记录),从A1开始;否则追加到下一行 If lastRow = 1 And ws.Range("A1").Value = "" Then ws.Range("A1").Value = Me.Range("S255").Value Else ws.Range("A" & lastRow + 1).Value = Me.Range("S255").Value End If End Sub
代码说明
Worksheet_Calculate:每次工作表计算完成后触发,不管是手动重算(F9)还是自动重算。lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row:定位A列最后一个有内容的单元格,确保每次都追加到新行。- 额外判断A1是否为空:避免首次记录时跳过A1直接写入A2。
内容的提问来源于stack exchange,提问作者Bao bab
相关产品推荐
相关产品推荐

