Excel 除游標所在列外其餘反黑

  • 182
  • 0

利用複製樣式的方式, 將游標所在列反黑, 突顯所在列的資料
 

接獲一個excel需求:
因內容的數字一堆, 看到後來眼都花了, 有沒有什麼方法可以將非關注的那列以外資料都反黑

一開始原本想使用網頁摭罩的方式來處理
要計算User的關注列之外的上方所有列的高度
與下方所有列的高度
再設計個摭罩將游標所在的上/下列擋住
似乎有點複雜, 先攔置一旁

後來簡化成將摭罩製成一個圖, 
待滑鼠點下去時, 跑迴圈, 將摭罩圖自第1列開始複製到最後一列
然後將滑鼠那行的圖檔刪除
問題在於圖檔製作的麻煩, 若列高不一樣, 那圖檔是否能適當擋住其他列, 不會擋住應該顯露出來的資料列?

最終想到複製樣式的方式, 或許比較便於操作與後續維護
前置作業如下:
1. 將工作表1複製為sheet2, sheet3:請務必使用sheet的[移動或複製]功能, 以免樣式跑掉
2. rename sheet2 為: 範本
3. rename sheet3為: 全黑
4. 將[全黑]的底色與字體顏色改為黑色, 標題列除外
 


vba如下:
Dim isProcessing As Boolean, WshTrg As Worksheet, WshSrc As Worksheet, WshSample As Worksheet


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If isProcessing Then Exit Sub
   
   isProcessing = True

   Set WshTrg = Sheets("工作表1")
   Set WshSrc = Sheets("全黑")
   Set WshSample = Sheets("範本")

   WshSrc.Cells.Copy
   With WshTrg.Cells
       .PasteSpecial Paste:=xlPasteFormats
       Application.CutCopyMode = False
   End With

   Dim idx As Integer
   idx = Target.Row

   WshSample.Rows(idx).Copy
   WshTrg.Rows(idx).PasteSpecial Paste:=xlPasteFormats
   Application.CutCopyMode = False
   
   Range(Chr(Target.Column + 64) & Target.Row).Select
   
   isProcessing = False
End Sub

結果如下: