我有一些Excel电子表格非常困难地击中数据库(针对总分类帐表的100多个查询... yikes!)。仅需刷新我的工作表(Shift+F9)在某些电子表格中很有帮助,但是我想要一种仅刷新所选单元的方法。我想到了以下代码,放置在此Workbook对象中:

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 Addin。我使用的方法是否可以?有更好的方法可以实现这一目标吗?

有帮助吗?

解决方案

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

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

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

通过使用应用程序对象,您无需捕获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 addin,可从中下载http://www.decisionmodels.com/downloads.htm

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top