金山WPS上非常好用的阅读模式,到了微软Office上就就没有了,很是心痛。
然而网上搜到的Office阅读模式,要么需要用到插件(比如“方方格子”的“聚光灯”),要么不能记忆高亮前的单元格颜色。
这里我收集整理了两种比较可行的阅读模式实现方法给大家参考,适用于Office Excel 2007及以上的版本。
如果对您有帮助,请不要忘记点个赞哦~
方法一:条件格式+VBA
打开Excel,点击 开始→条件格式→管理规则→新建规则→使用公式确定要设置格式的单元格,在 为符合此公式的值设置格式 的方框里输入以下公式:
=AND(CELL("row")=ROW(),CELL("col")=COLUMN())
然后点击下方的 格式 按钮,根据自己的喜好设置需要高亮的单元格样式。比如我设置了 字体加粗、显示外边框、绿色背景色,如图所示:
点击确定后,在 应用于 的输入框内,指定这个条件格式的应用范围,或者点击右侧的 ↑ 箭头拖动来选择应用范围。注意应用范围之外的单元格是不会被高亮的。例如我设置了范围为A1到Z100单元格,则输入 =A1:Z100 (系统会自动补上4个$符号),然后确定。
这时在工作簿内双击一个单元格,这个单元格都会被高亮。但是距离单击选中单元格即高亮的要求,还差了一点。这时候就需要VBA出场,自动刷新页面,来达到我们想要的效果。
ps: 如果没有启用宏,请先在 文件→设置→信任中心→信任中心设置→宏设置 里,选择 启用所有宏,并将文件另存为.xlsm文件。
最后点击 开发工具→Visual Basic,或者按Alt+F11打开VBA编辑器,在Sheet1 模块中,输入以下代码即可,代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True '自动更新页面
End Sub
方法二:纯VBA
废话不多说,直接上代码:
ps: 这里我选择调用的Workbook对象中的SheetSelectionChange事件,而不是Worksheet的SelectionChange事件,因此代码需要写在ThisWorkbook模块中而不是Sheet1模块中。
'定义一堆全局变量,用于记忆高亮之前的单元格样式 (只列出了常用的单元格样式)
Public X As Integer
Public Y As Integer
Public R As Integer
Public G As Integer
Public B As Integer
Public LS As Integer
Public FN As String
Public FS As Double
Public FB As Boolean
Public FI As Boolean
Public FCI As Integer
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'如果全局变量已经被赋值,对前一个选中的单元格应用已保存的样式
If X > 0 And Y > 0 Then
With Cells(X, Y)
.Interior.Color = RGB(R, G, B) '背景颜色
.Borders.LineStyle = LS '线条样式
.Font.name = FN '字体名称
.Font.Size = FS '字体大小
.Font.Bold = FB '字体加粗
.Font.Italic = FI '字体斜体
.Font.ColorIndex = FCI '字体颜色
End With
End If
'如果选择的范围内单元格数量大于1个,则退出此过程,避免出现溢出
If Target.Address Like "*[:,]*" Then
Exit Sub
Else
'获取当前选中的单元格的样式
On Error Resume Next
X = Target.Row
Y = Target.Column
R = Target.Interior.Color \ 256 ^ 0 Mod 256
G = Target.Interior.Color \ 256 ^ 1 Mod 256
B = Target.Interior.Color \ 256 ^ 2 Mod 256
LS = Target.Borders.LineStyle
FN = Target.Font.name
FS = Target.Font.Size
FB = Target.Font.Bold
FI = Target.Font.Italic
FCI = Target.Font.ColorIndex
'对当前选中的单元格应用自定义的样式 (根据自己的喜好更改)
With Cells(X, Y)
.Interior.Color = RGB(175, 255, 175)'绿色背景
.Borders.LineStyle = xlContinuous '实心线条
.Font.name = "Arial" 'Arial字体
.Font.Size = 11 '11号字体
.Font.Bold = True '字体加粗
.Font.Italic = FI '保留当前的字体斜体
.Font.ColorIndex = FCI '保留当前的字体颜色
End With
End If
End Sub
这里会有一个小小的问题:每次关闭Excel文件,并且即使没有对表格的内容做任何更改,退出时都会弹出是否保存的对话框,并且最后一次选中的单元格高亮效果会被保存下来,覆盖原有的单元格样式。
因此我选择调用的Workbook对象中的BeforeClose事件来解决这个问题,代码如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'在关闭Excel之前,对最后一次选中的单元格应用已保存的样式
If X > 0 And Y > 0 Then
With ActiveCell
.Interior.Color = RGB(R, G, B)
.Borders.LineStyle = LS
.Font.name = FN
.Font.Size = FS
.Font.Bold = FB
.Font.Italic = FI
.Font.ColorIndex = FCI
End With
End If
'关闭确认的对话框并自动保存
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
End Sub
以上就是我总结的两种Office Excel阅读模式的实现方法。
对应的源文件下载地址:https://lanzoui.com/iPek9tgf17i
欢迎留言讨论。如果对您有帮助,请不要忘记点个赞哦~