Вопрос

У меня есть несколько электронных таблиц Excel, которые довольно сильно попадают в базу данных (более 100 запросов против таблицы Главной книги ... Yikes!). Освежающий только лист, на котором я нахожусь (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 и загрузка его в качестве Adcel 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 

Также вы можете добавить его в контекстные меню листа и листового анома. Имя двух командных групп, которые вам нужно сделать, это ... «ячейка» и «ply»

Если вы просто хотите пересчитать выбранные в настоящее время ячейки, игнорируя ячейки, которые зависят от них, вы можете использовать мой rangecalc addin, загружаемый изhttp://www.decisionmodels.com/downloads.htm

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top