当前位置:首页 > 实用技巧 >

工作表背景设置了不显示(整张工作表界面被隐藏了怎么办)

来源:原点资讯(www.yd166.com)时间:2023-11-12 14:25:12作者:YD166手机阅读>>

本文于2023年8月23日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

内容提要

  • 使用条件格式,突出显示行列,保留原有背景色
  • 原代码更新,还原网格线

大家好,我是冷水泡茶,昨天我发了一篇文章【Excel VBA 工作表突出显示行列高亮(更新)/不影响已有背景色】,觉得已经“圆满”了。但是,文章下面有朋友留言:可以用条件格式。

在留言区进行了一番讨论,最后,我按这位朋友的方法试了一下,确实不错,代码简单。

还有位朋友说破坏了原来的网格线,感觉很不爽,要求来点补救代码。后来再次修改了一下代码,基本达成目的。我们一起来看一下吧::

使用条件格式

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Me.Cells.FormatConditions.Delete With Me.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=CELL(""row"")=ROW()") .Interior.Color = RGB(255, 0, 0) End With With Me.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=CELL(""col"")=COLUMN()") .Interior.Color = RGB(255, 0, 0) End With EndSub Private Sub Worksheet_Deactivate() Me.Cells.FormatConditions.Delete End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Cells.FormatConditions.Delete Next ThisWorkbook.Save End Sub

‍代码解析:

1、工作表SelectionChange事件,首先删除所有条件格式。

2、对当前工作表设置条件格式。设置条件格式而不是直接设背景色,就不会影响到单元格原来的格式了:

工作表背景设置了不显示,整张工作表界面被隐藏了怎么办(1)

3、工作表Deactivate事件,删除工作表所有条件格式。

4、工作簿BeforeClose事件,删除所有工作表的条件格式,保存工作簿。

原代码修改

1、模块1,HighLight过程,高亮显示:

Public LastRange As Range ' 用于存储上次突出显示的区域 Public currCell As Range Public Dic As Object Public blnHighLight As Boolean Sub HighLight() On Error Resume Next Dim dataRange As Range Dim currRange As Range Dim lastRow As Long Dim lastCol As Long Dim rng As Range Set Dic = CreateObject("Scripting.Dictionary") '获取工作表的数据区域,这里假设数据区域从A1开始,向右和向下延伸 With ActiveSheet lastRow = .UsedRange.Rows.Count lastCol = .UsedRange.Columns.Count Set dataRange = .Range("A1").Resize(lastRow, lastCol) '检查选定的单元格是否在数据区域内 If Not Intersect(currCell, dataRange) Is Nothing Then Set currRange = Union(currCell.EntireRow, currCell.EntireColumn) Set currRange = Intersect(currRange, dataRange) Else lastRow = Application.WorksheetFunction.Max(lastRow, currCell.Row) lastCol = Application.WorksheetFunction.Max(lastCol, currCell.Column) Set dataRange = Range(Cells(1, 1), Cells(lastRow, lastCol)) Set currRange = Union(currCell.EntireRow, currCell.EntireColumn) Set currRange = Intersect(currRange, dataRange) End If For Each rng In currRange Dic(rng.Address) = rng.Interior.Color Next currRange.Interior.Color = RGB(245, 245, 220) Set LastRange = currRange End With EndSub

‍代码解析:

(1)高亮单元格的主程序,这段应该没有改。

2、其他过程:

Private Sub CmdHighLight_Click() If Not LastRange Is Nothing Then For Each rng In LastRange rng.Interior.Color = Dic(rng.Address) If rng.Interior.Color = 16777215 Then rng.Interior.ColorIndex = xlNone End If Next Set LastRange = Nothing ' 清除上次突出显示的区域 Dic.RemoveAll End If If blnHighLight Then blnHighLight = False Me.CmdHighLight.Caption = "开启高亮" Else blnHighLight = True Me.CmdHighLight.Caption = "取消高亮" End If End Sub Private Sub Worksheet_Activate() If LastRange Is Nothing Then Me.CmdHighLight.Caption = "开启高亮" End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If blnHighLight Then If Not LastRange Is Nothing Then For Each rng In LastRange rng.Interior.Color = Dic(rng.Address) If rng.Interior.Color = 16777215 Then rng.Interior.ColorIndex = xlNone End If Next Set LastRange = Nothing ' 清除上次突出显示的区域 Dic.RemoveAll End If Set currCell = Target.Cells(1, 1) Call HighLight Else End If End Sub Private Sub Worksheet_Deactivate() Dim rng As Range If Not LastRange Is Nothing Then For Each rng In LastRange rng.Interior.Color = Dic(rng.Address) If rng.Interior.Color = 16777215 Then rng.Interior.ColorIndex = xlNone End If Next Set LastRange = Nothing ' 清除上次突出显示的区域 Dic.RemoveAll End If End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim rng As Range, ws As Worksheet, btn As OLEObject If Not LastRange Is Nothing Then For Each rng In LastRange rng.Interior.Color = Dic(rng.Address) If rng.Interior.Color = 16777215 Then rng.Interior.ColorIndex = xlNone End If Next Set LastRange = Nothing ' 清除上次突出显示的区域 End If '在关闭工作簿前,把开启或取消高亮的命令按钮的Caption恢复成“开启高亮” For Each ws In ThisWorkbook.Sheets For Each btn In ws.OLEObjects If btn.Object.Caption = "取消高亮" Then btn.Object.Caption = "开启高亮" End If Next Next ThisWorkbook.Save EndSub

‍代码解析:

(1)在所有的:

rng.Interior.Color = Dic(rng.Address)

下面增加3行代码,判断单元格是否是白色,是白色就把背景色设为无填充。

If rng.Interior.Color = 16777215 Then rng.Interior.ColorIndex = xlNone End If

3、注意事项:

(1)条件格式的方法,仅做了简单处理,整行整列都高亮,应该也可以设置成在数据区域范围内高亮。

(2)在条件格式的方法下,工作表不能使用其他条件格式,如果要保留原有的条件格式,那就又搞复杂了。

(3)在工作表Dactivate、工作簿BeforeClose事件中,都进行了条件格式的删除。如果不删除,就会有一个十字架显示在工作表中,感觉不太美观。

(4)在把白色单元格的填充色改为无填充后,对原本就是白色的单元格会产生影响,反正总是不能完美,顾了这头顾不了那头。

(5)在原来的方法中,命令按钮CmdHighLight,“开启高亮”、“取消高亮”,有时候也会有点小问题,不听使唤,不再管它了。

(6)两种方法都有优点,也有不足。如果从学习研究VBA的角度来说,两种方法都值得试试。

(7)就我个人而言,我仍然倾向于非条件格式的方法。原因是我对条件格式没有什么好感,以前工作表中一大堆条件格式,不仅影响工作表的性能,而且它不太稳定,看那个条件格式的规则窗口,东一段西一段的,搞得自己都晕乎;还有一个原因是,原先的代码中,运用字典来存储单元格的格式,还是有一点别出心裁的,当然,还是实用为先,各人喜欢罢了。

~~~~~~End~~~~~~

喜欢就点个、点在看留个言呗!分享一下更给力!感谢!

栏目热文

工作表背景颜色怎么设置(工作表背景颜色怎么设置成白色)

工作表背景颜色怎么设置(工作表背景颜色怎么设置成白色)

设置单元格样式。为了使电子表格文档更加美观、清晰明了,增加了Office软件的单元格样式功能。通过调整表格背景色和文字颜...

2023-11-12 14:58:38查看全文 >>

工作表标签在哪设置(怎样显示所有工作表标签)

工作表标签在哪设置(怎样显示所有工作表标签)

为了突出某个工作表,我们可以为工作表标签设置颜色,有颜色都工作表更加直观显示。下面我们一起来看看Excel如何设置工作表...

2023-11-12 15:00:59查看全文 >>

工作表设置固定选项(工作表的属性怎么设置)

工作表设置固定选项(工作表的属性怎么设置)

设置段落固定值的方法:首先打开要设置固定值的文档,选择需要的段落;然后点击段落选项旁边的小箭头,在弹出的窗口中找到行距选...

2023-11-12 14:34:43查看全文 >>

给工作表设置背景在哪个选项卡(工作表内的图标怎么设置为白色)

给工作表设置背景在哪个选项卡(工作表内的图标怎么设置为白色)

在现代办公环境中,Excel表格扮演着不可或缺的角色。然而,当我们需要将这些数据表格打印出来时,却常常面临一个问题:打印...

2023-11-12 14:43:43查看全文 >>

如何设置工作表始终在上方显示(怎样使工作表显示在工具栏上方)

如何设置工作表始终在上方显示(怎样使工作表显示在工具栏上方)

1文件操作1、为excel文件添加打开密码文件 - 信息 - 保护工作簿 - 用密码进行加密。2、为文件添加作者信息在该...

2023-11-12 14:49:05查看全文 >>

工作表背景怎么设置透明(工作表怎么插入透明背景)

工作表背景怎么设置透明(工作表怎么插入透明背景)

今天分享个表格可视化格式设置的小技巧。关于PowerBI表格/矩阵可视化的用法和常用格式设置,之前专门介绍过:玩转Pow...

2023-11-12 14:37:42查看全文 >>

工作表的图案灰色怎么设置(所有工作表背景颜色怎么设置)

工作表的图案灰色怎么设置(所有工作表背景颜色怎么设置)

今天给大家分享一下如何改变labview表格控件的背景,首先创建表格控件、右键选择制作自定义类型: 再次单击右键选择打...

2023-11-12 14:37:10查看全文 >>

怎么设置工作表工作栏颜色(工作表最上面的颜色怎么设置)

怎么设置工作表工作栏颜色(工作表最上面的颜色怎么设置)

【设置Excel的工作界面颜色】如果对Excel组件的主题颜色不满意,可根据需要奖其改成其他的颜色,具体的操作方法如下:...

2023-11-12 14:34:46查看全文 >>

工作表的标签栏在哪个位置(怎样显示所有工作表标签)

工作表的标签栏在哪个位置(怎样显示所有工作表标签)

工作表是表格的主要编辑区域,主要由名称框、编辑栏、单元格、行号、列号和工作表标签等组成。一、工作表区域:1、名称框:用于...

2023-11-12 14:32:15查看全文 >>

工作表标签怎么调出(工作表标签不见了怎么找到)

工作表标签怎么调出(工作表标签不见了怎么找到)

收集汇总了常用的Excel快捷键,包括在工作表标签之间切换、应用或取消单元格格式、插入或删除单元格、查找和替换数据、创建...

2023-11-12 14:46:03查看全文 >>

文档排行