返回列表 上一主題 發帖

[發問] 選擇單元格時欄列變色

[發問] 選擇單元格時欄列變色

未變色.PNG
2023-5-3 17:44


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    On Error Resume Next
     If Target.Count > 1 Then Exit Sub
    Cells.FormatConditions.Delete
   
With Target.EntireColumn.FormatConditions  '欄變色
        .Delete
        .Add xlExpression, , "TRUE"
        .Item(1).Interior.ColorIndex = Int(28)
    End With
   
With Target.EntireRow.FormatConditions  '列變色
        .Delete
        .Add xlExpression, , "TRUE"
        .Item(1).Interior.ColorIndex = Int(35)
    End With
   
With Target.FormatConditions  '單元格變色
        .Delete
        .Add xlExpression, , "TRUE"
        .Item(1).Interior.ColorIndex = Int(4)
    End With
End Sub

各位大大
小弟為了方便辨識目前的看哪個欄列,上網去找了"選擇單元格時欄列變色"的語法
確實是有達到我要的效果
但是
燈號那個欄位卻不見了

燈號消失.PNG
2023-5-3 17:44


請問上面那段語法哪裡寫錯,煩請知道的大大們幫助小弟解惑

回復 1# cowww


    謝謝前輩發表此主題
後學研習方案如下,請前輩參考

執行結果:
20230504_1.jpg
2023-5-4 08:12



Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
   Dim xR As Range, xA As Range
   If .Columns.Count = Columns.CountLarge Then Exit Sub
   If .Count > 1 Or .Column = 1 Then Exit Sub
   Set xR = .Cells: Set xA = Range([B1], Cells(1, Columns.Count)).EntireColumn
   With Intersect(ActiveSheet.UsedRange, xA)
      .Interior.ColorIndex = xlNone
      Intersect(xR.EntireRow, .Cells).Interior.ColorIndex = 6
      Intersect(xR.EntireColumn, .Cells).Interior.ColorIndex = 6
   End With
   .Interior.ColorIndex = 4
End With
End Sub
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 2# Andy2483


非常感謝Andy2483大大的解惑
但是
搞定了列位,變成欄位的原來顏色不見了

變色前
變色前.PNG
2023-5-4 08:52


變色後
變色後.PNG
2023-5-4 08:52

TOP

本帖最後由 Andy2483 於 2023-5-4 09:36 編輯

回復 3# cowww


    謝謝前輩回復
後學學習方案如下,請前輩參考

執行結果:
20230504_2.jpg
2023-5-4 09:27



Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
   Dim xR As Range, xA As Range, xB As Range
   If .Columns.Count = Columns.CountLarge Then Exit Sub
   If .Count > 1 Or .Column = 1 Or .Row = 1 Then Exit Sub
   Set xR = .Cells: Set xA = Range([B1], Cells(1, Columns.Count)).EntireColumn
   Set xB = Range([A2], Cells(Rows.Count, 1)).EntireRow
   With Intersect(ActiveSheet.UsedRange, xA, xB)
      .Interior.ColorIndex = xlNone
      Intersect(xR.EntireRow, .Cells).Interior.ColorIndex = 6
      Intersect(xR.EntireColumn, .Cells).Interior.ColorIndex = 6
   End With
   .Interior.ColorIndex = 4
End With
End Sub
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 4# Andy2483

非常感謝Andy2483大大的解惑
欄位的背景顏色還是會消失
變色前.PNG
2023-5-4 10:15


變色後.PNG
2023-5-4 10:15

TOP

回復 5# cowww


    謝謝前輩再回復,謝謝論壇
後學學習方案如下,請前輩參考

標題列在第4列,執行結果:
20230504_3.jpg
2023-5-4 10:29



Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
   Dim xR As Range, xA As Range, xB As Range
   If .Columns.Count = Columns.CountLarge Then Exit Sub
   If .Count > 1 Or .Column = 1 Or .Row < 5 Then Exit Sub
   Set xR = .Cells: Set xA = Range([B1], Cells(1, Columns.Count)).EntireColumn
   Set xB = Range([A5], Cells(Rows.Count, 1)).EntireRow
   With Intersect(ActiveSheet.UsedRange, xA, xB)
      .Interior.ColorIndex = xlNone
      Intersect(xR.EntireRow, .Cells).Interior.ColorIndex = 6
      Intersect(xR.EntireColumn, .Cells).Interior.ColorIndex = 6
   End With
   .Interior.ColorIndex = 4
End With
End Sub
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 6# Andy2483

非常感謝Andy2483大大的解惑

成功了
變色後.PNG
2023-5-4 10:49

TOP

回復 6# Andy2483

可否請Andy2483大大解惑一下這段語法
小弟完全看不懂

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題