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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top