题
我有一些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
不隶属于 StackOverflow