Excel VBA ricalcola la selezione
Domanda
Ho alcuni fogli di calcolo Excel che stanno colpendo il database piuttosto duro (oltre 100 domande contro il tavolo di contabilità generale ... Yikes!). Abbandonare solo il foglio su cui mi trovo (Shift+F9) è utile in alcuni fogli di calcolo, ma volevo un modo per aggiornare solo le celle selezionate. Mi viene inventato il seguente codice, inserito nell'oggetto di questo lavoro:
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 possibile, vorrei renderlo più portatile, come archiviarlo in un file XLA e caricarlo come un componente aggiuntivo Excel. È possibile con il metodo che sto usando? C'è un modo migliore per raggiungere questo obiettivo?
Soluzione
Dovresti essere in grado di utilizzare quanto segue:
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
Dovresti effettuare un po 'di errori di gestione attorno alla riga "Imposta RNG", poiché l'utente potrebbe non aver selezionato un intervallo (ad esempio, potrebbero aver selezionato un grafico).
Utilizzando l'oggetto dell'applicazione non è necessario acquisire l'evento WorkBook_SheetSelectionChange.
Altri suggerimenti
Se stai usando il metodo dalla risposta accettata sopra, dovresti prima verificare che ...
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
Inoltre, si desidera aggiungerlo al foglio e ai menu di contesto del foglio. Il nome delle due barre di comando che devi fare sono ... "cell" e "ply"
Se vuoi solo ricalcolare le celle attualmente selezionate, ignorando le celle che dipendono da esse, puoi usare il mio addin RangeCalc, scaricabile dahttp://www.decisionmodels.com/downloads.htm