Excel 阅读模式 高亮标记 聚光灯效果 “完美“解决方案

问题提出

  • 大家在使用excel时,如果表中的数据比较丰富,那么你一定遇到过一个烦恼,就是会发生看错行,或看错列的现象。
  • 大家如果有使用wps的经验,那么应该会对wps的阅读模式有印象,wps阅读模式下,将当前选中单位格所在的行和所在的列进行高亮标记,以此辅助用户在查阅数据时进行行对齐和列对齐。
  • 那么,在excel中是否可以达到wps中的阅读模式的效果呢?很不幸,就目前的excel软件状态来说,貌似没有找到此类的功能。

解决方案

  • 就目前网上给了的决角方案,有以下思路。
    -i- 条件格式思路。通过设置条件格式,使当前行显示预置的显示样式,例如填充为黄色。
    -i- VBA思路。通过后台VBA脚本,将当前选中单元格所在的行显示成特定的填充颜色。
    -i- 第三方插件思路。

使用体验缺陷

  • 条件格式思路,是一个不错的思路,目前所遇到的问题主要如下:
    -i- 需要对每一个需要显示高亮效果的文档设置条件格式,甚至每一个表格。如果不设置,就没有高效效果。
    -i- 在实际使用体验中,如果表格有其它条件格式,则管理条件格式时可能会造成混乱
  • VBA思路,相对来说,对于使用者要求一定的代码能力。目前所遇到的问题主要如下:
    -i- 正常的xlsx文档无法保存VBA代码,导致对于xlsx文档关闭后再打开时,无法延续VBA的效果
    -i- 如果文档保存为xlsm,则可以保存VBA代码,但这意味着之间保存的xlsx文档都需要进行转换,实际操作不现实。另外在文档传递时,xlsm文档因为包含代码,会被提示安全风险。或者直接被禁止运行。
    -i- VBA的运行会导致一些正常的excel操作无法进行,例如无法进行单元格的复制/粘贴操作。
    -i- VBA脚本对单元格本来的背景色设置是破坏性的。VBA运行后,原来单元格的背景色将被清空,这不是想要看到的结果。
  • 第三方插件思路。
    -i- 此方案暂没有使用过,但第三方插件大部分需要收费,免费的可能存在代码不安全,在办公场景下使用可能会受公司安全策略的制约。

解决办法

过VBA进行条件格式的管理。如此则可结合两种思路的优势,同时避免各方的劣势,实现高亮当前行和当前列的目的。目前使用体验上近似理想。

  • VBA部分:参过VBA进行条件格式的管理,包括添加,删除等。从而实现以下目的:
    -i- 自动对所阅读的excel表格(worksheet or workbook)进行条件格式设置,避免了人工设置条件格式的麻烦
    -i- 自动识别并删除不需要高亮效果的表中的条件格式,从而避免人工操作时容易引起的错误删除,改动等问题
    -i- 可以跨表,跨文档同步高亮效果的设置状态。例如你在当前表中启用了高亮效果,则无论你切换到本工作簿中的另一个表,还是切换到另一个工作簿中,你所阅读的表都会保持高亮的显示效果。

效果展示

本文所涉及的方案,显示效果如下:
Excel 阅读模式 高亮标记 聚光灯效果 “完美“解决方案_第1张图片

上图可看出,本方案的实施效果并不是将整行整列单元格进行背景色填充,而是将所在行的单元格的下边框(或者同列单元格的左边框)进行了红色显示,从而达到标记当前行和当前列的目的。实际使用体验是非常不错的,大家在使用中遇到需要改进的问题,欢迎在评论区提出讨论。

具体实施

由于VBA代码的组织不在单一的文档中,所以就不直接贴代码了,VBA代码被保存在一个xlam文档中,大家可以下载使用:DyyCustomerUI.xlam

使用方法

  1. 将上述的xlam文档下载到本地,保存在可靠的路径下

  2. 打开任一excel文档(目的是打开excel界面),在 excel选项 / 加载项 / 管理:Excel加载项 转到 / 浏览 找到保存的xlam文档并选择 / 确定

  3. 此时您应该可以看到下图的界面:
    Excel 阅读模式 高亮标记 聚光灯效果 “完美“解决方案_第2张图片

  4. 勾选 vbaCal复选框,即可看到当前所在的单元格的阅读模式效果了。

  5. xlam里的VBA是没有加密的,如果有兴趣,可以查阅,也欢迎大家讨论。

缺陷与责任说明:

  1. 该方案并非完美方案,在切换readMode状态时,VBA会对表格的条件格式进行操作,此VBA的操作会对用户的当前操作造成影响,例如操作记录被清空(无法撤消),再例如当前的复制状态消失(复制区域的虚线状态消失)等;就此,十分期望有大神可以出手解决,以便进一步完善功能体验。
  2. 该方案对于合并单元格的支持不算友好,当表格中存在合并单元格时,所标记的亮线会存在错位和中断的现象。这个是由于 cell(“row”)=row() 公式的运行结果所限制。
  3. 该方案目前并未进行充分的测试,只是作者在自用的过程过,逐步修改和完善,所以不排除由于作者使用场景有限,操作场景单一而未发现的其它冲突或者bug。
  4. 本方案发表于此,仅供参考和学习讨论,并不进行任何形式和内容的承诺,如果在使用的过程中造成损失,作者不承担任何责任。

以上就是本文章的所有内容,欢迎大家批评指正。

你可能感兴趣的:(EXCEL,VBA,vba,excel)