本文原創,轉載請注明出處:https://www.cnblogs.com/wotent/p/15348891.html
TLDR
下載文件 高亮.zip ,將解壓后的“高亮.xlam”保存在 C:\Users\用戶名\AppData\Roaming\Microsoft\AddIns 中。
按照本文最后的步驟5和步驟6設置即可。
介紹
在 Excel 的日常操作中,經常需要用到高亮當前行或當前列的功能,如 WPS 的“閱讀模式”和易用寶的“聚光燈”功能。
但無論 WPS 還是 易用寶,都缺少我自己需要的另外一個功能:高亮重復值。
我需要的“高亮重復值”功能,並不是條件格式中的“重復值”,而是高亮顯示與活動單元格具有相同值的單元格。

第一階:高亮當前行(條件格式)
此方法用到的公式:
=ROW()=CELL("row")
此方法網絡上有很多教程,簡述如下:
- 選擇全部單元格
- “開始” => “條件格式” => “管理規則”
- 新建規則
- 使用公式確定要設置格式的單元格
- 填入上述公式
- 點擊“格式按鈕” => “填充”選項卡,選擇喜歡的高亮當前行的顏色
- 一路確定
這便用條件格式實現了高亮當前行的功能。
但是,此時的高亮不會隨着活動單元格的改變自動刷新,按 F9(重新計算) 可手動刷新高亮行的位置。
第二階:添加高亮重復值的功能
此方法用到的公式:
=IF(CELL("type") = "b",FALSE,CELL("contents")=CELL("contents", INDIRECT(ADDRESS(ROW(), COLUMN()))))
受高亮當前行方式的啟發,找到了高亮重復值的方法:
再添加一項條件格式,填入上述公式,將兩條規則的關系按下圖設置,並注意兩點:
- 高亮重復值的規則在上,高亮當前行的規則在下
- “如果為真則停止”全部勾選

第三階:VBA 實現自動刷新
此方法從網絡獲得,具體鏈接現在搜索不到了。
- 右鍵單擊底部的工作表名稱,選擇“查看代碼”命令
- 在代碼框輸入以下代碼並退出 VBA 編輯器
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
這便實現了高亮行的自動刷新,高亮行始終顯示在活動單元格的那一行上,不用再手動點擊 F9 了。
但是,添加了 VBA 代碼后,不能保存為 xlsx,需要保存為 xlsm。
我按照上述的方法制作了一個空的 excel 文件,在此后的相當長一段時間內,我都復制這個“模板”來處理 Excel 文檔。
第四階:
第三階的方法,使用了很長時間,但有兩個很致使的問題:一是將文件發給他人的時候,會帶着 VBA 代碼和條件格式,以 xlsm 的格式發出去,造成他人的不便;二是處理普通 Excel 文件時,不能很方便的應用高亮功能(需要手動添加條件格式和 VBA 代碼)。
前幾天看到一篇文章(Excel 高亮顯示選擇行列【不影響格式】https://club.excelhome.net/thread-1372036-1-1.html),受其中注冊事件用法的啟發,決定將 VBA 代碼做成共享的,使 Excel 啟動時自動加載,並用 VBA 實現添加條件格式,這樣,對於任何 Excel 文件,只需點幾下按鈕即可實現高亮功能,且保存后的文件不帶有任何 VBA 代碼。
步驟1:
打開 Excel 程序,直接另存為 高亮.xlam 文件,保存至 C:\Users\用戶名\AppData\Roaming\Microsoft\AddIns 文件夾中。
步驟2:
打開此 高亮.xlam 文件,點擊“開發工具”選項卡中的“Visual Basic”打開“Microsoft Visual Basic for Applications”。(沒有“開發工具”選項卡的自行搜索添加“開發工具”選項卡的方法)
步驟3:
菜單“插入” => “模塊”
在對應的代碼窗口輸入以下代碼:
1 Option Explicit
2 Public HL
3 Sub 自動刷新打開()
4 Set HL = New SheetSelectionChangeHandler
5 Set HL.handler = Application
6 End Sub
7
8 Sub 自動刷新關閉()
9 HL = Null
10 End Sub
11 Sub 條件格式高亮添加()
12 Dim selectedRange As Range
13 Set selectedRange = Selection
14
15 Cells.Select
16 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")"
17 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
18 With Selection.FormatConditions(1).Interior
19 .Color = RGB(146, 205, 220)
20 End With
21 Selection.FormatConditions(1).StopIfTrue = True
22
23 Cells.Select
24 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(CELL(""type"") = ""b"",FALSE,CELL(""contents"")=CELL(""contents"", INDIRECT(ADDRESS(ROW(), COLUMN()))))"
25 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
26 With Selection.FormatConditions(1).Interior
27 .Color = RGB(0, 176, 90)
28 End With
29 Selection.FormatConditions(1).StopIfTrue = True
30 selectedRange.Select
31 End Sub
步驟4:
菜單“插入” => “類模塊”
在屬性窗口(如沒有,按 F4 打開屬性窗口)中將類模塊名稱改為SheetSelectionChangeHandler
在對應的代碼窗口中輸入以下代碼:
1 Option Explicit
2
3 Public WithEvents handler As Application
4
5 Private Sub handler_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
6 Application.ScreenUpdating = True
7 End Sub
一定要在“Microsoft Visual Basic for Applications”窗口中點擊保存按鈕,如果直接關掉該窗口,默認是不保存的。
步驟5:
打開“文件” => “選項” => “自定義功能區”,“從下列位置選擇命令”設置為“宏”,設置為如下圖所示結構:

大功造成,現在,可以在“我的工具”選項卡中,點擊“條件格式高亮添加”按鈕來添加高亮相關的條件格式,點擊“自動刷新打開按鈕”使高亮區域根據活動單元格自動刷新。

步驟6:
點擊“開發工具”選項卡的“Excel 加載項”命令,選中“高亮”(高亮.xlam的名稱)並點擊確定,這樣,就不會每次都出現“啟用宏”的提示了。
