2013-09-04 27 views
5

Jeśli wybiorę liczbę komórek w programie Excel, widzę niektóre funkcje na tych w niestandardowym pasku stanu. Ta informacja jest mój własny wybór z następujących czynności:Czy mogę dodać własną funkcję do niestandardowego paska stanu w programie Excel?

  • Średnia
  • Hrabia
  • numeryczna Ilość
  • Minimalna
  • Maksymalna
  • Suma

chcę dodać do ta lista zawiera funkcję, która oblicza stosunek niepustych komórek. Funkcja będzie = COUNTA (zakres)/(COUNTA (zakres) + COUNTBLANK (zakres)), ale jak mogę ją wprowadzić na pasku stanu? Nie mam dużego doświadczenia w VBA, więc niektóre wyjaśnienia byłyby mile widziane.

+0

byłem zaintrygowany przez to tak samo szukając jakiś Google. Przyszedł kilka odpowiedzi, w których wszyscy mówią, że używanie "Application.StatusBar" jest jedynym sposobem. Co jest niefortunne .. :(http://superuser.com/questions/476690/adding-a-function-to-customized-status-bar-in-excel – jerussell

+0

To jest! Chciałbym zobaczyć te rzeczy bardziej konfigurowalne, jak "Dodaj niestandardową funkcję" na dostosowanym pasku stanu po kliknięciu prawym przyciskiem myszy – Lewistrick

Odpowiedz

7

Spróbuj coś takiego (nie jest najlepszym sposobem, aby to zrobić, ale jednak rozwiązuje swój cel)

Objaśnienie: Co ten kod robi to sprawdza czy użytkownik wybrał prawidłowy zakres (z minimum 2-komorowy) a następnie używa Application.Evaluate do obliczenia formuły, a następnie wyświetlenia jej na pasku stanu. Zauważ też, że nie wykonałem żadnej obsługi błędów. Jestem pewien, że się tym zajmiesz :)

Wklej to w odpowiednim obszarze kodu arkusza.

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 

Jest to bardzo prosty sposób robienia tego. W przypadku, gdy ma to zastosowanie do wszystkich arkuszy, będziesz musiał odpowiednio je zmienić.

Problem z tą metodą polega również na eliminacji komunikatów poziomu aplikacji na pasku stanu.

Zrzut

enter image description here

+0

Dzięki, możesz zrobić w 1 linii mniej, ponieważ jeśli 'Target.Cells.Count' = 1, również wybrany jest zakres i funkcja Wynik powinien wynosić 0 lub 1. – Lewistrick