Excel VBA重新计算select

我有一些Excel数据库很难打到数据库(针对总帐表的100多个查询…)。 只刷新我正在工作表(SHIFT + F9)在一些电子表格中是有帮助的,但是我想要一种刷新所选单元格的方法。 我想到了下面的代码,放在ThisWorkbook对象:

Dim currentSelection As String Private Sub Workbook_Open() Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelection" End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) currentSelection = Target.Address End Sub Private Sub RecalculateSelection() Range(currentSelection).Calculate End Sub 

如果可能的话,我想使它更便于携带,比如将其存储在XLA文件中,并将其作为Excel插件加载。 这可能与我正在使用的方法? 有没有更好的方法来实现这一目标?

您应该能够使用以下内容:

 Public Sub RecalculateSelection() Dim rng As Range Set rng = Application.Selection rng.Calculate End Sub 

你应该在'Set rng'一行放置一些error handling,因为用户可能没有select一个范围(例如他们可能select了一个图表)。

通过使用应用程序对象,您不需要捕获Workbook_SheetSelectionChange事件。

如果你从上面的接受答案使用的方法,你应该首先检查…

 If Not Selection Is Nothing Then If TypeName(Application.Selection) = "Range" Then Dim Rng As Range Set Rng = Application.Selection Rng.Calculate End If End If 

您也可以将其添加到工作表和工作表上下文菜单中。 你需要做的两个命令栏的名字是…“Cell”和“Ply”

如果你只是想重新计算当前选中的单元格,忽略依赖它们的单元格,你可以使用我的RangeCalc插件,可以从http://www.decisionmodels.com/downloads.htm下载