Excel VBA重新计算所选内容
我有一些Excel电子表格,它们对数据库的影响非常大(针对总账表的100多个查询…哎呀!)。在某些电子表格中,仅刷新我所在的工作表(SHIFT+F9)很有帮助,但我想找到一种只刷新选定单元格的方法。我在ThisWorkbook对象中找到了以下代码:Excel VBA重新计算所选内容,excel,xla,vba,Excel,Xla,Vba,我有一些Excel电子表格,它们对数据库的影响非常大(针对总账表的100多个查询…哎呀!)。在某些电子表格中,仅刷新我所在的工作表(SHIFT+F9)很有帮助,但我想找到一种只刷新选定单元格的方法。我在ThisWorkbook对象中找到了以下代码: Dim currentSelection As String Private Sub Workbook_Open() Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelectio
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 Advin加载。我现在用的方法可能吗?是否有更好的方法实现此目的?如果您只想重新计算当前选定的单元格,而忽略依赖于这些单元格的单元格,则可以使用my RangeCalc addin,可从
您应该能够使用以下功能:
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
您应该在“设置rng”行周围放置一些错误处理,因为用户可能没有选择范围(例如,他们可能选择了图表)
通过使用应用程序对象,您无需捕获工作簿\u Sheet SelectionChange事件。如果您使用上述已接受答案中的方法,则应首先检查
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
此外,您可能希望将其添加到图纸和图纸名称上下文菜单中。
需要执行此操作的两个命令栏的名称是。。。
“电池”和“帘布层”完美!我怀疑有一个更简单的方法,但是Excel VBA的世界对我来说还是很新的。看起来你的插件正是我想要的。我希望我能接受不止一个答案。公平地说,我不得不接受Chris Spicer的回答,因为我同意他的解决方案。谢谢:RangeCalc addin还自动处理Range的一些怪癖。计算:请参阅