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