有人喜欢,但我个人仅在 2-3 种情况下需要状态栏:
- 过滤后显示选择后剩余的值个数
- 选择范围时,它将显示所选单元格的总和,平均值和数量
- 在文件繁重的情况下,您可以在书中看到重新计算公式的进度。
对于几乎占据整个屏幕宽度并一直挂在屏幕上的线条来说,并没有那么多。 让我们尝试扩展这个简单的列表并添加一些更有用的功能🙂
管理状态栏的一般原则
使用 Visual Basic 管理状态栏非常容易。 要在其中显示您的文本,您可以使用一个简单的宏:
Sub MyStatus() Application.StatusBar = "Привет!" 结束子
运行后,我们得到:
要恢复状态栏的原始状态,您将需要相同的短“反宏”:
Sub MyStatus_Off() Application.StatusBar = False End Sub
如您所见,在基本版本中,一切都非常简单。 现在让我们尝试发展这个想法……
状态栏中所选范围的地址
在公式栏的 Excel 窗口左上角,您始终可以看到当前单元格的地址。 但是,如果选择了整个范围,那么很遗憾,我们将不会在那里看到选择地址 - 显示相同的单个活动单元格:
为了解决这个问题,您可以使用一个简单的宏,它将在状态栏中显示所选区域的地址。 此外,这个宏应该自动启动,对任何工作表上的选择进行任何更改——为此,我们将把它放在事件处理程序中 选择改变 我们的书。
使用选项卡上的同名按钮打开 Visual Basic 编辑器 开发人员 (开发商) 或键盘快捷键 左 Alt+F11. 在项目面板的左上角找到你的书,然后双击打开其中的模块 这本书 (本工作簿):
在打开的窗口中,复制并粘贴以下宏代码:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Выделено: " & Selection.Address(0, 0) End Sub
现在,当选择任何范围(包括多个!)时,其地址将显示在状态栏中:
为了防止使用 Ctrl 选择的多个范围的地址合并,您可以添加一个小改进——使用替换功能将逗号替换为带空格的逗号:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Выделено: " & Replace(Selection.Address(0, 0), ",", ", ") End Sub
状态栏中选定单元格的数量
选中任意范围时,默认在状态栏右侧显示非空选中单元格的数量。 有时您需要知道分配的数量。 此任务也可以通过一个简单的宏来完成,以处理 SelectionChange 图书事件,如前面的示例所示。 您将需要一个宏,例如:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim CellCount As Variant, rng As Range For Each rng In Selection.Areas '遍历所有选择 RowsCount = rng.Rows.Count '行数 ColumnsCount = rng.Columns . Count '列数 CellCount = CellCount + RowsCount * ColumnsCount '累计单元格总数 Next '显示在状态栏 Application.StatusBar = "Selected:" & CellCount & "cells" End Sub
该宏循环遍历所有Ctrl选中的区域(如果有多个),将每个区域的行数和列数存储在RowsCount和ColumnsCount变量中,并将单元格数累加到CellCount变量中,然后显示在状态栏中。 在工作中它看起来像这样:
当然,您可以将这个和前面的宏结合起来,同时显示所选范围的地址和单元格的数量。 您只需将倒数第二行更改为:
Application.StatusBar = "已选择:" & Replace(Selection.Address(0, 0), ",", ", ") & " - 总 " & CellCount & " 单元格"
那么画面会相当精彩:
嗯,我想你明白了。 在评论中提出建议——在状态栏中显示还有什么有用的?
- 什么是宏,它们如何工作,如何使用和创建它们
- 在 Excel 工作表上方便地选择坐标
- 如何让复杂的公式更直观