JMax在識別缺陷方面是正確的,因爲如果它每次單擊它時都會更改顏色並選擇一個註釋單元格,您將無法編輯該單元格。解決此問題的最佳方法是僅在雙擊時更改顏色。我還要定義選擇的行/列,看看他們屬於一個表的範圍內(而不是使用Application.Intersect)內,不過這只是個人喜好
喜歡的東西...
Private Sub Worksheet_Beforedoubleclick(ByVal target As Range, cancel As Boolean)
Application.EnableEvents = False
Dim TargRow as Variant
Dim TargCol as Variant
TargRow = target.Row
TargCol = target.Column
'Define Header, FirstCol, CommentCol, LastCol as required to define your table/range where you wish these changes to be made. CommentCol is the cell in which comments should be made
If TargRow > Header And TargCol > FirstCol and TargCol < LastCol Then
If Cells(TargRow,TargCol).Interior.ColorIndex <> -4142 Then 'change color as required to match background
Cells(TargRow,TargCol).Interior.ColorIndex = 3 'change color as required; this makes them red
Cells(TargRow,CommentCol).Select
Else
Cells(TargRow,TargCol).Interior.ColorIndex = -4142 'match color from start of IF statement
End If
End If
Application.EnableEvents = True
End Sub
請注意,我們禁用事件,因此我們不能通過選擇不同的單元來觸發其他代碼。在實現Worksheet_SelectionChange事件時,這是絕對必要的,而在BeforeDoubleClick事件中更是如此,
考慮如何觸發宏以及它們如何爲用戶提供靈活性非常重要。這Excel help video提供了一個合理的介紹
我有一點時間再次工作,我能夠得到突出顯示比預期容易得多。我現在有一個突出的是: '私人小組Workbook_SheetBeforeDoubleClick(BYVAL SH作爲對象,BYVAL目標作爲範圍,取消爲布爾) 如果Target.Interior.ColorIndex = xlNone 然後Target.Interior.ColorIndex = 6 elseif的目標.Interior.ColorIndex = 6 Then Target.Interior.ColorIndex = xlNone End If Cancel = True End Sub' 這就是我所要做的,就是突出顯示(或刪除高亮顯示)單元格。 – Jon
如果將代碼放在工作表本身中,則不需要聲明'Sh as Object'...那麼在更長的示例中識別目標行的原因是我們可以選擇該行中的註釋單元格。其餘的目的是使代碼健壯,可能並不是必需的 –
好吧,顯然我在這裏做錯了什麼。我放棄了評論中的內容,並將其插入工作表中,而不是放在工作簿中。我假設我正在搞定義事情,所以我需要爲此工作。 – Jon