- 帖子
- 175
- 主題
- 8
- 精華
- 0
- 積分
- 207
- 點名
- 90
- 作業系統
- WIN 10
- 軟體版本
- Office 2010
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2011-6-30
- 最後登錄
- 2025-4-13
      
|
3#
發表於 2011-7-18 22:21
| 只看該作者
本帖最後由 infoverdad 於 2011-7-18 22:25 編輯
回復 2# GBKEE
謝謝GBKEE版大,真是太棒了!! 它不但更簡潔,也解決了我之前因應用需要,須逐一修改定義名稱的麻煩!!
不過為避免修改欄名,而致另一欄欄名變空白, 還是要使用exitHandler來處理它. 所以我把程式碼稍微修改了一下,這樣我未來在工作上就可以多多善用它了!!- Option Explicit
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim wsLists As Worksheet, Rng As Range
- On Error GoTo errHandler
- If Target.Count > 1 Then Exit Sub
- Set wsLists = Worksheets("Lists")
- Application.EnableEvents = False
-
- If Target.Column = 2 Then
- Set Rng = wsLists.Range("A:A").Find(Target, LookAt:=xlWhole, MatchCase:=True)
- With Target.Offset(0, 1)
- If Not Rng Is Nothing Then .Value = Rng.Offset(0, 1).Value Else: GoTo exitHandler
- End With
-
- ElseIf Target.Column = 3 Then
- Set Rng = wsLists.Range("B:B").Find(Target, LookAt:=xlWhole, MatchCase:=True)
- With Target.Offset(0, -1)
- If Not Rng Is Nothing Then .Value = Rng.Offset(0, -1).Value Else: GoTo exitHandler
- End With
- End If
- Application.EnableEvents = True
-
- exitHandler:
- Application.EnableEvents = True
- Exit Sub
- errHandler:
- MsgBox Err.Number & ": " & Err.Description
- GoTo exitHandler
-
- End Sub
複製代碼 |
|