2013-09-04 1 views
5

Wenn ich eine Anzahl von Zellen in Excel wähle, kann ich einige Funktionen auf die in der Customized Statusleiste angezeigt. Diese Information ist meine eigene Auswahl aus den folgenden:Kann ich der benutzerdefinierten Statusleiste in Excel meine eigene Funktion hinzufügen?

  • Durchschnittliche
  • Graf
  • Numerische Zählung
  • Minimum
  • Maximum
  • Summe

ich hinzufügen möchte Dies listet eine Funktion auf, die das Verhältnis von nicht leeren Zellen berechnet. Die Funktion wäre = COUNTA (Bereich)/(COUNTA (Bereich) + COUNTBLANK (Bereich)), aber wie kann ich das in der Statusleiste? Ich habe nicht viel Erfahrung in VBA haben, so würde eine Erklärung zu begrüßen.

+0

ich damit war fasziniert tat so einige Google-Suche. Ich habe ein paar Antworten gefunden, in denen alle sagen, dass 'Application.StatusBar' der einzige Weg ist. Welches ist bedauerlich .. :(http://superuser.com/questions/476690/adding-a-function-to-customized-status-bar-in-excel – jerussell

+0

Es ist! Ich möchte diese Dinge besser angepasst werden, um zu sehen, wie ein "Add custom function" in der Customized Statusleiste, wenn Sie mit der rechten Maustaste darauf klicken. – Lewistrick

Antwort

7

Versuchen Sie so etwas wie diese (nicht der beste Weg, es aber zu tun, sondern löst Ihren Zweck)

Erklärung: Dieser Code macht überprüft, wenn der Benutzer einen gültigen Bereich ausgewählt hat (von mindestens 2 Zellen) und verwendet dann die Application.Evaluate Ihre Formel zu berechnen und sie dann in der Statusleiste angezeigt werden soll. Beachten Sie auch, dass ich keine Fehlerbehandlung durchgeführt habe. Ich bin sicher, dass Sie sich darum kümmern werden :)

Fügen Sie diese in dem entsprechenden Blattcodebereich.

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If TypeName(Target) = "Range" Then 
     If Target.Cells.Count > 1 Then 
      Application.StatusBar = "My Function: " & _ 
            Application.Evaluate(_ 
                  "=COUNTA(" & _ 
                  Target.Address & _ 
                  ")/(COUNTA(" & _ 
                  Target.Address & _ 
                  ") + COUNTBLANK(" & _ 
                  Target.Address & _ 
                  "))" _ 
                  ) 
     End If 
    End If 
End Sub 

Dies ist eine sehr einfache Art, es zu tun. Wenn Sie möchten, dass es für alle Blätter gilt, müssen Sie es entsprechend anpassen.

Auch das Problem mit dieser Methode ist, dass es die Nachrichten auf Anwendungsebene in der Statusleiste unterdrückt.

Screenshot

enter image description here

+0

Danke, Sie könnten in 1 Zeile weniger tun, denn wenn 'Target.Cells.Count' = 1, ist auch ein Bereich ausgewählt und die Funktion Ergebnis sollte 0 oder 1 sein. – Lewistrick

Verwandte Themen