admin管理员组

文章数量:1600381

金山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/iPek9tgf17i

欢迎留言讨论。如果对您有帮助,请不要忘记点个赞哦~

本文标签: 两种单元格记忆模式方法