Pergunta

Eu tenho algumas planilhas do Excel que estão atingindo bastante o banco de dados (mais de 100 consultas contra a tabela geral do livro ... caramba!). Refrescante apenas a folha em que estou (Shift+F9) é útil em algumas planilhas, mas eu queria uma maneira de atualizar apenas as células selecionadas. Eu criei o código a seguir, colocado no objeto Thatworkbook:

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

Se possível, gostaria de torná -lo mais portátil, como armazená -lo em um arquivo XLA e carregá -lo como um adicional do Excel. Isso é possível com o método que estou usando? Existe uma maneira melhor de conseguir isso?

Foi útil?

Solução

Você deve poder usar o seguinte:

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

Você deve colocar algum manuseio de erros em torno da linha 'Set RNG', pois o usuário pode não ter selecionado um intervalo (por exemplo, eles podem ter selecionado um gráfico).

Ao usar o objeto de aplicativo, você não precisa capturar o evento de manual de trabalho_sheetselectionChange.

Outras dicas

Se você estiver usando o método da resposta aceita acima, você deve primeiro verificar isso ...

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 

Além disso, você pode adicioná -lo aos menus do contexto da folha e do lençol. O nome das duas barras de comando que você precisa fazer isso é ... "célula" e "dobra"

Se você deseja apenas recalcular as células selecionadas atualmente, ignorando as células que dependem deles, você pode usar meu addin RangeCalc, download dehttp://www.decisionmodels.com/downloads.htm

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top