Excel VBA berechnen die Auswahl neu
Frage
Ich habe einige Excel -Tabellenkalkulationen, die die Datenbank ziemlich hart treffen (über 100 Abfragen gegen die Hauptbuchtabelle ... Yikes!). Das Erfrischen nur das Blatt, auf dem ich bin (Shift+F9), ist in einigen Tabellenkalkulationen hilfreich, aber ich wollte eine Möglichkeit, nur die ausgewählten Zellen zu aktualisieren. Ich habe den folgenden Code ausgedacht, der in das Thisworkbook -Objekt platziert ist:
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
Wenn möglich, möchte ich dies tragbarer machen, z. B. das Speichern in einer XLA -Datei und das Laden als Excel -Addin. Ist das mit der Methode, die ich verwende, möglich? Gibt es einen besseren Weg, dies zu erreichen?
Lösung
Sie sollten Folgendes verwenden können:
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
Sie sollten einige Fehlerbehandlungen in der Zeile "Set RNG" platzieren, da der Benutzer möglicherweise keinen Bereich ausgewählt hat (z. B. sie haben möglicherweise ein Diagramm ausgewählt).
Durch die Verwendung des Anwendungsobjekts müssen Sie das Ereignis von Workbook_SheetSelectionChange nicht erfassen.
Andere Tipps
Wenn Sie die Methode aus der akzeptierten Antwort oben verwenden, sollten Sie zunächst nachsehen ...
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
Möglicherweise möchten Sie es auch den Kontextmenüs mit Blatt und Sheetname hinzufügen. Der Name der beiden Befehlskräfte, die Sie tun müssen, sind ... "Zelle" und "Ply"
Wenn Sie nur die aktuell ausgewählten Zellen neu berechnen möchten und Zellen ignorieren, die von ihnen abhängig sindhttp://www.decisionmodels.com/downloads.htm