Bisakah saya menambahkan fungsi saya sendiri ke bilah status yang dikustomisasi di Excel?

Jika saya memilih sejumlah sel di Excel, saya dapat melihat beberapa fungsi pada sel tersebut di bilah status Khusus. Informasi ini adalah pilihan saya sendiri dari berikut ini:

  • Rata-rata
  • Menghitung
  • Hitungan numerik
  • Minimum
  • Maksimum
  • Jumlah

Saya ingin menambahkan ke daftar ini fungsi yang menghitung rasio sel yang tidak kosong. Fungsinya adalah =COUNTA(range) / (COUNTA(range) + COUNTBLANK(range)), tetapi bagaimana cara memasukkannya ke dalam bilah status? Saya tidak punya banyak pengalaman dalam VBA, jadi beberapa penjelasan akan diterima.


person Lewistrick    schedule 04.09.2013    source sumber
comment
Saya tertarik dengan ini, begitu pula beberapa pencarian Google. Munculkan beberapa jawaban yang semuanya mengatakan bahwa menggunakan Application.StatusBar adalah satu-satunya cara. Sangat disayangkan.. :( superuser.com/questions/476690/   -  person jerussell    schedule 04.09.2013
comment
Dia! Saya ingin melihat hal-hal ini lebih dapat disesuaikan, seperti fungsi Tambahkan kustom di bilah status Disesuaikan saat Anda mengklik kanan.   -  person Lewistrick    schedule 05.09.2013


Jawaban (1)


Cobalah sesuatu seperti ini (Meskipun bukan cara terbaik untuk melakukannya tetapi selesaikan tujuan Anda)

Penjelasan: Apa yang dilakukan kode ini adalah memeriksa apakah pengguna telah memilih rentang yang valid (minimal 2 sel) dan kemudian menggunakan Application.Evaluate untuk menghitung rumus Anda dan kemudian menampilkannya di bilah status. Perhatikan juga bahwa saya belum melakukan penanganan kesalahan apa pun. aku yakin kamu akan menjaganya :)

Tempelkan ini di area kode lembar yang relevan.

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

Ini adalah cara yang sangat mendasar untuk melakukannya. Jika Anda ingin ini berlaku untuk semua lembar maka Anda harus mengubahnya.

Masalah dengan metode ini juga adalah bahwa metode ini akan menyembunyikan pesan tingkat aplikasi di bilah status.

Tangkapan layar

masukkan deskripsi gambar di sini

person Siddharth Rout    schedule 04.09.2013
comment
Terima kasih, Anda dapat melakukannya dalam 1 baris lebih sedikit, karena jika Target.Cells.Count = 1, rentang juga dipilih dan skor fungsinya harus 0 atau 1. - person Lewistrick; 04.09.2013