彰化一整天的論壇

 找回密碼
 立即註冊
查看: 348|回復: 10

多層次下拉清單 前項改變後項清空

[複製鏈接]
發表於 2019-3-8 16:20:15 | 顯示全部樓層 |閱讀模式
本帖最後由 zhenjix 於 2019-3-11 11:33 編輯

您好,請教您
問題①
在使用 →[多層次下拉清單] 時,
當選好「子項」後面的內容後,
但這時「父項」前一欄位的內容原已挑選好的,如果進行變更時,
後面的「子項」要如何才會自動清空?
有找到相關VB,執行正常,
但操作表格時,當我把「父項」、「子項」欄位(A7:B7)一起選取後→按delete
就會出現錯誤的訊息,↓黃色底的部份。

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 2018/06/04
    Application.EnableEvents = False
    If Target.Column = 1 And Target.Validation.Type = 3 Then
        Target.Offset(0, 1).Value = ""
    End If
    Application.EnableEvents = True
End Sub


問題②
在使用 →[多層次下拉清單] 時,
「子項」會可以直接輸入內容,
是否有辦法:強迫使用者先輸入「父項」→再輸入「子項」?


問題③

在使用 →[多層次下拉清單] 時,
因項目太多,是否支援輸入清單中的某些關鍵字,就會自動帶出類似的名單出來?
例如:輸入「花」→就帶出「花蓮、花壇…」的相關清單
測試.xlsm (185.06 KB, 下載次數: 45)
回復

使用道具 舉報

發表於 2019-3-12 14:18:24 | 顯示全部樓層
zhenjix 發表於 2019-3-12 11:48
不好意思,第一個問題,變成
我改其他某一個欄位的內容時,一樣會有錯誤的顯示(滑鼠點二下進去改時)
例如我 ...

您把程式碼修改如下再試看看.
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. 'Update by Extendoffice 2018/06/04
  3.     Application.EnableEvents = False
  4.    
  5.     Set r = Cells.SpecialCells(xlCellTypeAllValidation)
  6.    
  7.     'Debug.Print Target.Column, Target.Validation.Type, Target.Value
  8.     If Target.Columns.Count = 1 Then '選取1欄才做
  9.         If Target.Column = 1 Then
  10.           If Not Intersect(Target, r) Is Nothing Then
  11.             If Target.Validation.Type = 3 Then
  12.                 Target.Offset(0, 1).Value = ""
  13.             End If
  14.           End If
  15.         End If
  16.     End If
  17.     Application.EnableEvents = True
  18. End Sub
複製代碼


測試20190311a.xlsm

187.71 KB, 下載次數: 1

售價: 1 金錢  [記錄]

回復 支持 1 反對 0

使用道具 舉報

發表於 2019-3-9 17:31:43 | 顯示全部樓層
本帖最後由 imingho 於 2019-3-9 17:59 編輯

您好,
    您的檔案內,我看不到任何程式碼?請上傳*.xlsm,*.xlsx內的程式檔會被自動移除。
還有我只看到下拉【男、女】沒看到您說的多層式選單.
excel20190309.jpg

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-3-11 11:18:47 | 顯示全部樓層
抱歉,不太會用不知這次有沒有成功
測試.xlsm (185.06 KB, 下載次數: 45)
回復 支持 反對

使用道具 舉報

發表於 2019-3-11 14:20:04 | 顯示全部樓層
本帖最後由 imingho 於 2019-3-11 14:26 編輯
zhenjix 發表於 2019-3-11 11:18
抱歉,不太會用不知這次有沒有成功

您好,
     先回答您第1個問題.

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. 'Update by Extendoffice 2018/06/04
  3.     Application.EnableEvents = False
  4.    
  5.     'Debug.Print Target.Column, Target.Validation.Type, Target.Value
  6.     If Target.Columns.Count = 1 Then '選取1欄才做
  7.         If Target.Column = 1 And Target.Validation.Type = 3 Then
  8.             Target.Offset(0, 1).Value = ""
  9.         End If
  10.     End If
  11.     Application.EnableEvents = True
  12. End Sub

複製代碼

測試20190311a.xlsm

186.96 KB, 下載次數: 1

售價: 1 金錢  [記錄]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-3-12 11:11:24 | 顯示全部樓層
imingho 發表於 2019-3-11 14:20
您好,
     先回答您第1個問題.

謝謝您,可以用了
剩下的2個再拜託您,大感謝
回復 支持 反對

使用道具 舉報

發表於 2019-3-12 11:15:52 | 顯示全部樓層
zhenjix 發表於 2019-3-12 11:11
謝謝您,可以用了
剩下的2個再拜託您,大感謝

第2個問題的程式碼如下.
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. 'Update by Extendoffice 2018/06/04
  3.     Application.EnableEvents = False
  4.    
  5.    
  6.     If Target.Columns.Count = 1 Then '選取1欄才做
  7.         If Target.Column = 1 And Target.Validation.Type = 3 Then
  8.             Target.Offset(0, 1).Value = ""
  9.         End If
  10.     End If
  11.    
  12.     If Target.Column = 2 Then
  13.         If Target.Offset(0, -1).Value = "" Then
  14.            Target.Value = ""
  15.            MsgBox "請先選取縣市"
  16.         End If
  17.     End If
  18.     Application.EnableEvents = True
  19. End Sub
複製代碼

測試20190311b.xlsm

187.45 KB, 下載次數: 1

售價: 1 金錢  [記錄]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-3-12 11:48:01 | 顯示全部樓層
不好意思,第一個問題,變成
我改其他某一個欄位的內容時,一樣會有錯誤的顯示(滑鼠點二下進去改時)
例如我改:入班時段 由5改成6時

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 2018/06/04
    Application.EnableEvents = False
   
    'Debug.Print Target.Column, Target.Validation.Type, Target.Value
    If Target.Columns.Count = 1 Then '選取1欄才做
        If Target.Column = 1 And Target.Validation.Type = 3 Then
            Target.Offset(0, 1).Value = ""
        End If
    End If
    Application.EnableEvents = True
End Sub

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-3-13 15:10:07 | 顯示全部樓層
imingho 發表於 2019-3-12 14:18
您把程式碼修改如下再試看看.

可以了!耶!謝謝您!
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-3-15 09:52:59 | 顯示全部樓層
imingho 發表於 2019-3-12 11:15
第2個問題的程式碼如下.

您好,請教第三個問題有解嗎?
拜託您了!
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-8-24 16:01 , Processed in 0.162153 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表