Excel – 单元格的内容乘以12,只有一次

我正在尝试更新input到Column A单元格的值。 我有下面的脚本几乎可以按预期工作。 它更新单元格,但是会继续更新,直到达到指数级数目。

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then intcolumn = Target.Column introw = Target.Row Cells(introw, intcolumn) = Cells(introw, intcolumn) * "12" End If End Sub 

有没有办法让我可以做到这一点,所以我可以在A中input任何数字? 只有一次乘以12? (1 = 12,2 = 24,3 = 36,4 = 48等)

您的更改将再次触发Worksheet_Change事件。 你需要有一些标志来跟踪它:

 Private changeFlag As Boolean Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Not changeFlag Then changeFlag = True intcolumn = Target.Column introw = Target.Row Cells(introw, intcolumn).Value = Cells(introw, intcolumn).Value * 12 Else changeFlag = False End If End Sub 

将单元格值乘上将触发Worksheet_Change事件,该事件触发此macros。 所以,当你在单元格A1中input“1”时,这是一个导致乘法1 * 12 = 12的变化,但是也是一个变化,这导致12 * 12 = 144,这也是一个变化等,这就是重复的原因。

这应该修复它,在执行操作之前禁用事件,然后在退出子例程之前重新启用事件:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Application.EnableEvents = False 'Prevent looping based on the 'change' caused by multiplication intcolumn = Target.Column introw = Target.Row Cells(introw, intcolumn) = Cells(introw, intcolumn) * "12" Application.EnableEvents = True 'allow events again End If End Sub