自动触发执行表中的+ F2键的macros

我想实现一个macros,当数据被复制到一个表中时会自动触发。 macros应在整个表中执行ENTER + F2。

到目前为止,我有这样的:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("B8")) Is Nothing Then Range("Input_Table").Select Selection.Value = Selection.FormulaR1C1 End If End Sub 

单元格B8是我的表格左上angular的单元格,它被称为“Input_Table”。

macros本身工作,但通过将一大堆数据复制到表中自动触发它经常崩溃Excel或触发器堆栈错误。

有没有办法写这个更有效率?

closures事件处理,或者Worksheet_Change只会在写入值时尝试在自身上运行。

  Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B8")) Is Nothing Then on error goto safe_exit application.enableevents = false Range("Input_Table").FormulaR1C1= Range("Input_Table").FormulaR1C1 End If safe_exit: application.enableevents = true End Sub 

你不想将公式写入值; 有可能你有一个公式。 使用.Value2这是没有date或区域货币“标记”的原始基础值。 单元格的原始格式将这些恢复到.Value。