返回列表 上一主題 發帖

[發問] 關於選取儲存格後,該列範圍變色,出現位移。

[發問] 關於選取儲存格後,該列範圍變色,出現位移。

各位前輩們好,
這原是由整列變色改寫而成,但沒改成功,網路上還在努力搜尋中,
錯誤的部分是:
當我選取C4時,該是A4:G4變色
則出現位移成A7:G7

當我選取C5時,該是A5:G5變色
則出現位移成A9:G9

當我選取C6時,該是A6:G6變色
則出現位移成A11:G11

在此先求助前輩們,尋求解答!感謝萬分!請下載附件。
問題.rar (39.31 KB)

本帖最後由 samwang 於 2021-9-4 09:23 編輯

回復 1# av8d

請測試看看,謝謝

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xA As Range, xR As Range
Cells.Interior.Pattern = 0
If Target.Column = 3 Then
    Set xA = [A4:G1000]
    If Intersect(xA, Target) Is Nothing Then Exit Sub
    For Each xR In xA.Rows
        If Not Intersect(xR, Target) Is Nothing Then xR.Interior.Color = RGB(240, 255, 240)
    Next
End If
End Sub

TOP

回復 2# samwang

感謝前輩大大假日抽空完成了我的煩惱,真的是很厲害,謝謝您!

TOP

回復 2# samwang

不好意思,想再請教前輩大大,
如果是空白,改為單一儲存格變色,該如何改寫?謝謝。

TOP

回復  samwang

不好意思,想再請教前輩大大,
如果是空白,改為單一儲存格變色,該如何改寫?謝謝。
av8d 發表於 2021-9-5 01:22


請測試看看,謝謝
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xA As Range, xR As Range
Set xA = [A1:XFD65536] '設定範圍
If Intersect(xA, Target) Is Nothing Then Exit Sub
xA.Interior.ColorIndex = 0
Intersect(Target, xA).Interior.Color = RGB(255, 255, 0)
End Sub

TOP

回復 5# samwang


謝謝前輩假日抽空協助,我意思是既有的情況(儲存格有則範圍列變色,無則單一儲存格變色)
我修改了前輩的程式碼後為
If Intersect(xA, Target) Is Nothing Then
    xA.Interior.ColorIndex = 0
    Intersect(Target, xA).Interior.Color = RGB(240, 255, 240)
Else
    For Each xR In xA.Rows
        If Not Intersect(xR, Target) Is Nothing Then xR.Interior.Color = RGB(240, 255, 240)
    Next
End If
但是功能還是只有範圍變色,沒有單一儲存格變色,受益良多,謝謝前輩。

TOP

本帖最後由 quickfixer 於 2021-9-5 20:57 編輯

回復 6# av8d


    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xA As Range, xR As Range
Cells.Interior.Pattern = 0
If Target.Column = 3 Then
    Set xA = [A4:G1000]
    If Intersect(xA, Target) Is Nothing Then Exit Sub
    For Each xR In xA.Rows
        If Not Intersect(xR, Target) Is Nothing Then
            If Cells(xR.Row, 3) <> "" Then
                xR.Interior.Color = RGB(240, 255, 240)
            Else
                Cells(xR.Row, 3).Interior.Color = RGB(200, 200, 240)
            End If
        End If
    Next
End If
End Sub

TOP

回復 6# av8d

不好意思,可否說明詳細一點或實際範例,謝謝

TOP

本帖最後由 av8d 於 2021-9-6 00:12 編輯

回復 7# quickfixer
回復 8# samwang

謝謝前輩們,我把我改寫後的檔案上傳,請過目。
問題延伸.rar (36.28 KB)

改寫後操作方式
當點C4時,A4:G4變色,正確。
當點C5時,A5:G5變色,正確。
當點C6時,C6單一格變色,正確。
到這裡原以為改寫完成,都正確了,但是後續操作發現↓

當點C5並刪除後,點C6則會變成A6:G6變色,錯誤,應為C6單一格變色。
再點回C5,A5:G5變色,錯誤,應為C5單一格變色。(因為C5剛已刪除,所以是空白的狀態)

可能我改寫錯了,還請前輩們更正,感激不盡。

TOP

本帖最後由 quickfixer 於 2021-9-6 01:05 編輯

回復 9# av8d


    我使用samwang的程式碼,在#7改寫的,用你的說明操作,沒問題

要刪除後立刻變色,在#7多加入下面3行
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then Call Worksheet_SelectionChange(Target)
End Sub

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題