2009-11-26 49 views
0

我们可以在不移动光标的情况下执行公式吗?将数据输入到输入单元格后,我们按Enter键或从该单元格移动,然后与该单元格相关的任何公式都会被执行。有没有什么办法可以在输入时自己看到excel输出的结果?请帮我找到这个选项。现场执行公式

+0

你能解释一下你为什么要这样做吗?我可以看到问题,但没有这样做的好处。不要批评,只是好奇。 – Mathias 2009-11-26 04:53:40

回答

2

我不相信代码在单元格的“编辑器”具有焦点和控制权时可以执行。例如,在编辑公式时,请尝试在Excel中执行其他操作。我相信单元必须在代码执行之前完成其值或公式的保存。

当单元格更新时,可以有一个公式“监听”,但这有点复杂。一旦它被更新,它可以强迫你回到原来的单元格。以下是如何编写一些代码来“监听”单元格值发生变化的代码。在以下示例中:

  • 我将Cell I1的值记录到strValue
  • 然后我运行一个循环,保持运行,只要单元格I1的值没有改变。
  • DoEvents命令将控制权释放回处理器,这允许您在运行Excel时使用它。
  • 一旦单元格I1的值发生变化,While语句将为false,循环将退出。
  • 循环结束后,会弹出一个消息框,告诉您更改的值,然后再次选择原始单元格。

'

Sub testChange() 
Dim strValue As String 

strValue = Range("I1").Value 

Do While strValue = Range("I1").Value 
    DoEvents 
Loop 

MsgBox "The value changed!" 
Range("I1").Activate 
End Sub 

或许,如果你只是想每一个数值发生变化时控制返回到原来的电池,你可以使用线以上没有消息框,并返回到循环一旦你方法执行。请记住,如果你这样做,你可能需要找出另一种方式退出你的代码。

为什么你想让它在单元格内执行?你的任务的最终目的是什么?

+0

据我所知,唯一可用的事件是Worksheet_Change(作为范围的ByVal目标),当更改完成时(即离开目标时)触发该事件。你会在你描述的场景中听到什么?我觉得你需要一个我认为不存在的事件,比如改变。 – Mathias 2009-11-26 04:51:16

+0

@Mathias - 看我上面的例子。它使用'DoEvents'和一个循环来“监听”来查看单元格的值何时发生变化。 – 2009-11-26 05:04:32

+0

在Excel 2003中测试您的宏,MsgBox仅在您按Enter完成编辑单元格后触发。值属性不会更新,直到 – barrowc 2009-11-27 04:30:57

0

按F9键进行重新计算而不移动输入单元格。这在Excel 2007中有效。我不确定早期版本。