【问题标题】:Can I add my own function to the customized status bar in Excel?我可以将自己的函数添加到 Excel 中的自定义状态栏吗?
【发布时间】:2013-09-04 11:12:09
【问题描述】:

如果我在 Excel 中选择多个单元格,我可以在自定义状态栏中看到一些功能。此信息是我自己从以下信息中选择的:

  • 平均
  • 计数
  • 数字计数
  • 最低
  • 最大值
  • 总和

我想在此列表中添加一个计算非空白单元格比率的函数。该函数将是 =COUNTA(range) / (COUNTA(range) + COUNTBLANK(range)),但我怎样才能将它放入状态栏中? 我在 VBA 方面没有太多经验,因此欢迎提供一些解释。

【问题讨论】:

  • 我对此很感兴趣,所以也做了一些谷歌搜索。提出了一些答案,他们都说使用Application.StatusBar 是唯一的方法。这是不幸的.. :( superuser.com/questions/476690/…
  • 是的!我希望看到这些更可定制的东西,例如右键单击自定义状态栏中的“添加自定义功能”。

标签: excel excel-2010 statusbar vba


【解决方案1】:

尝试这样的事情(虽然不是最好的方法,但可以解决你的目的)

说明:此代码的作用是检查用户是否选择了有效范围(至少 2 个单元格),然后使用 Application.Evaluate 计算您的公式,然后将其显示在状态中酒吧。另请注意,我没有进行任何错误处理。我相信你会照顾好它:)

将此粘贴​​到相关的工作表代码区域。

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

这是一种非常基本的方法。如果您希望它适用于所有工作表,则必须相应地对其进行修改。

此方法的另一个问题是它会抑制状态栏中的应用程序级别消息。

截图

【讨论】:

  • 谢谢,你可以少写1行,因为如果Target.Cells.Count = 1,也会选择一个范围,函数得分应该是0或1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多