返回列表 上一主題 發帖

[發問] 先不重複篩選後,並自動設為下拉式選單

趁這個版面詢問一下,WorkSheet_Change的用法
底下分別是版主跟龍大的程式碼
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim xF As Range, xA As Range
  3. With Target
  4.      If .Count > 1 Or .Columns.Count > 1 Or .Row < 2 Or .Column <> [I1].Column Then Exit Sub
  5.      Set xA = .Cells(1, -1).Resize(1, 2): xA.ClearContents
  6.      If .Value <> "" Then Set xF = [清單!d:d].Find(.Value, Lookat:=xlWhole)
  7.      If Not xF Is Nothing Then xA = xF(1, -1).Resize(1, 2).Value
  8. End With
  9. End Sub



  10. Private Sub Worksheet_Change(ByVal Target As Range)

  11. If Target.Column <> 9 Then Exit Sub

  12. Application.EnableEvents = False
  13. 塞資料入字典
  14. Key$ = Target.Value
  15. Cells(Target.Row, 8) = 下拉選單.D(Key).用途別
  16. Cells(Target.Row, 7) = 下拉選單.D(Key).工作計畫
  17. Application.EnableEvents = True

  18. End Sub
複製代碼
我的問題是
一、為什麼IF的後面都不需要加上 END IF而且除錯都沒問題

二、Target指的是滑鼠點到的任何一個儲存格嗎?   因為可以取得Target.Row
       或是Target.Column。
      但是Private Sub Worksheet_Change(ByVal Target As Range)又把Target當RANGE ?

三、我測試了一個小程式,但是只動了一次,就沒動作了,不曉得錯在哪裡
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column <> 3 Then Exit Sub
  3. Application.EnableEvents = False
  4. Target.Interior.ColorIndex = 3
  5. End Sub
複製代碼
照理說,我隨便選一個儲存格,如果該儲存格不是第3欄 (C欄)
     那就離開程式
     如果選到其他欄,那就會把儲存格顏色變紅色
     但是就沒辦法
     就算我選到的儲存格,隨便輸入123,再刪掉,這樣算是有Change了吧?
     也沒動作....

四、Set xA = .Cells(1, -1).Resize(1, 2): xA.ClearContents 這邊.Resize是什麼功能?

以上詢問,謝謝
哈囉~大家好呀

TOP

回復 21# iceandy6150


1)、為什麼IF的後面都不需要加上 END IF而且除錯都沒問題?
__if 條件 then 結果, 寫成一行, 就不須加 end if

2)、Target指的是滑鼠點到的任何一個儲存格嗎?
__就是selection中的range物件, 可以是單格, 選續範圍, 或不規則選取區塊

3)、我測試了一個小程式,但是只動了一次,就沒動作了,不曉得錯在哪裡?
__Application.EnableEvents = False
  "觸發事件"--關閉, 這是為了避免"重復觸發"造成無限循環,
  程式底下應再多一行:
  Application.EnableEvents = True
  (恢復觸發) 否則下次就沒作用!

4)、Set xA = .Cells(1, -1).Resize(1, 2) 這邊.Resize是什麼功能?
    以一個range定點, 向右或向下"擴展"成一個範圍,
  例如: range("a1").resize(4,3)  ---> A4:C4


=============================

TOP

回復 22# 准提部林


    感謝版主的教學回覆,我再來好好試試這幾個功能,感謝
哈囉~大家好呀

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題