3

我有一些 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 插件加载。我使用的方法可以做到这一点吗?有没有更好的方法来实现这一目标?

4

3 回答 3

4

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

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

您应该在“Set rng”行周围放置一些错误处理,因为用户可能没有选择范围(例如,他们可能选择了图表)。

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

于 2009-12-17T13:16:34.043 回答
4

如果您使用上面接受的答案中的方法,您应该首先检查...

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”

于 2010-01-04T22:40:41.430 回答
2

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

于 2009-12-17T12:49:56.783 回答