Excel VBA重新计算选择

时间:2009-12-16 00:29:16

标签: excel-vba excel xla vba

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

3 个答案:

答案 0 :(得分: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 

您也可以将其添加到工作表和工作表上下文菜单中。 您需要执行的两个命令栏的名称是...... “细胞”和“Ply”

答案 1 :(得分:3)

您应该可以使用以下内容:

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

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

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

答案 2 :(得分:2)

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