回復 6#Hsieh超版
我的意思是有驗證清單的儲存格式是允許輸入空白值的,如輸入值是 空白值,
Set A = s.Find(Target, lookat:=xlWhole) 傳回 A Is Nothing
你4樓的程式, 在樓主的檔案會產生錯誤.作者: Hsieh 時間: 2011-7-19 08:58
Set Rng = wsLists.Range("A:A").Find(Target, LookAt:=xlWhole, MatchCase:=True) '這個是用find開始查詢了,指定給rng,只是我不懂lookat:=xlWhole是什麼意思,F1的說明也沒有特別說明xlWhole是在幹嘛,MatchCase:=True是把大小寫也列入判斷條件裡吧?
With Target.Offset(0, 1) '這邊是讓target的結果往右飄一格,只是我不懂為什麼要用with
If Not Rng Is Nothing Then .Value = Rng.Offset(0, 1).Value Else .Value = "" 'Not Rng Is Nothing,我想了很久,所以應該是負負得正的意思?
下面的東西就是再重複一次只是方向不同對吧?
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 .Value = ""
End With
End If
Application.EnableEvents = True
End Sub
1. 在您find方法內是寫if Target.Count > 1 Then Exit sub
請問是在什麼情況之下Count才會小於1呢? 這樣寫是為了避免什麼情況發生呢?
2. 在執行過您上面分享的Ex之後,我試著亂改裡面的程式看有什麼效果。
然後我改成
Private Sub Worksheet_Change(ByVal Target As Range)
if Target.Count < 1 Then
MsgBox Target.Count
End If
End Sub
我主要是想試試看修改成您在find方法裡面的用法會有什麼效果
結果我發現<1的時候即便我選擇兩個以上的儲存格也不會執行MsgBox
除非是寫成=1,這樣選擇一個儲存格的時候可以正常的執行MsgBox
如果寫成<=1或>=1的時候,也只有在選擇一個儲存格的時候才能正常執行MsgBox
請問這是為什麼呢?
寫成<1的時候不是該代表我選擇一個以上的儲存格時,就能顯示正常的結果嗎?