利用複製樣式的方式, 將游標所在列反黑, 突顯所在列的資料
接獲一個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
結果如下: