Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub <----把該行拿掉就可以執行
On Error Resume Next
Target(1, 2) = Sheet2.[b:b].Find(Target, , , 1)(1, 2).Value
End Sub作者: oobird 時間: 2011-1-10 13:38
If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub
這行是限定對單一儲存格輸入同時輸入的欄位必須是b欄才會執行動作。
你若拿掉會在任何地方輸入或改變時都執行。作者: hugh0620 時間: 2011-1-10 14:05
另外我是用另外一個大大的寫法來修改,請大大幫忙看一下,這樣的寫法有什麼樣的缺失
If (Target.Count > 1 Or Target.Column <> 2) And (Target.Count > 2 Or Target.Column <> 3) Then Exit Sub
On Error Resume Next
Target(1, 2) = Sheet2.[b:b].Find(Target, , , 1)(1, 2).Value
If Target.Count > 2 Or Target.Column <> 3 Then Exit Sub
On Error Resume Next
Target(1, 2) = Sheet3.[b:b].Find(Target, , , 1)(1, 2).Value作者: GBKEE 時間: 2011-1-10 16:44
回復 10#hugh0620
1. 變數.Count ?????????
Private Sub Worksheet_Change(ByVal 變數 As Range)
Range是物件 .Count 傳回物件子集合的計數
2.IsNumeric(I) 是否解讀 IsNumeric判別[I]是TRUE或是FALSE
對的
你所附上的程式可參可9樓所修改的程式碼較為簡潔
On Error Resume Next 使用上要小心 ,如程式碼有寫錯後,執行上是不易查出錯誤在哪裡的.作者: hugh0620 時間: 2011-1-10 17:19