有實施時要考慮幾件事情Worksheet_Change事件宏。
當您計劃在事件宏中更改/刪除/添加任何值到工作表時,首先要考慮的是您要觸發另一個事件,並且Worksheet_Change將嘗試在其本身之上運行。始終禁用事件與Application.EnableEvents = False
處理改變任何ñ工作表,並記住與Application.EnableEvents = True
離開事件宏或沒有前途的事件將觸發另一個Worksheet_Change直到事件處理重新開啓之前再次打開它。
第二件要考慮的事情是如何處理不止一個單元格接收變更。如果將多個值粘貼到B列中,則可能會發生這種情況。您還需要隔離僅粘貼到B列中的值;其他專欄可能會同時收到價值觀。
如果清除城市值並檢查城市列中的重複項是您應該爲其決定適當操作的其他考慮因素,那麼如何處理此ID。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(2)) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim cty As Range
For Each cty In Intersect(Target, Columns(2))
If CBool(Len(cty.Value2)) Then
cty.Offset(0, -1) = Application.Max(Columns(1)) + 1
'check for duplicates and mark xlRed if found
'comment or delete this if not required
If Application.CountIf(Columns(2), cty.Value2) > 1 Then
cty.Interior.Color = vbRed
Else
cty.Interior.Pattern = xlNone
End If
Else
'not sure whether you want to clear the
'ID column if the city column is cleared
cty.Offset(0, -1).ClearContents
'or clear any background fill from a duplicate
cty.Interior.Pattern = xlNone
End If
Next cty
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
雖然我使用application.Max
以確保一個唯一的編號,在列A的ID可以手動不脫離事件宏任何干擾編輯。
有可與Worksheet_Change很多事情要做。以上是一個非常好的框架,可以幫助您開始,並且您應該能夠在「着色內部線條」的同時擴展其功能。
向我們展示你先試過的東西,你可能並不遙遠。 –
selection_change究竟出了什麼問題?什麼都沒有發生或錯誤彈出? – Lance