返回列表 上一主題 發帖

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

回復 1# iceandy6150


自己試試吧!
  1. Sub 下拉選單()

  2. '工作表2的A欄
  3. Arr = Range([工作表2!A2], [工作表2!A65535].End(3))
  4. List$ = ""
  5. For R = 1 To UBound(Arr)  '去除重複
  6.   If InStr(List, Arr(R, 1)) = 0 Then List = List & "," & Arr(R, 1)
  7. Next
  8. With [G2:G100].Validation  '下拉格式的範圍自己改
  9.   .Delete
  10.   .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=List
  11. End With

  12. '工作表2的B欄
  13. Arr = Range([工作表2!B2], [工作表2!B65535].End(3))
  14. List = ""
  15. For R = 1 To UBound(Arr)  '去除重複
  16.   If InStr(List, Arr(R, 1)) = 0 Then List = List & "," & Arr(R, 1)
  17. Next
  18. With [H2:H100].Validation  '下拉格式的範圍自己改
  19.   .Delete
  20.   .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=List
  21. End With

  22. '工作表2的C欄
  23. Arr = Range([工作表2!C2], [工作表2!C65535].End(3))
  24. List = ""
  25. For R = 1 To UBound(Arr)  '去除重複
  26.   If InStr(List, Arr(R, 1)) = 0 Then List = List & "," & Arr(R, 1)
  27. Next
  28. With [I2:I100].Validation  '下拉格式的範圍自己改
  29.   .Delete
  30.   .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=List
  31. End With
  32. End Sub
複製代碼
自動設下拉式選單0518.rar (25.74 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 2# 准提部林

感謝版主提供檔案
但是我看按鈕裡面似乎沒有程式碼

目前需求是這樣
基本上工作表1是保持空的
如果有請購單據進來的話,才會開始逐筆打資料進去
打完後會剪走,讓工作表1又保持乾淨空的狀態

只是要打  [工作計畫        用途別        用途類別] 的時候
方法一,用手慢慢打
方法二,設定資料驗證,設定去找 [清單]裡面的範圍   工作計畫設定一次         用途別設定一次          用途類別設定一次
               然後每一筆資料該填什麼,就去下拉選擇

方法三,利用VBA設一個按鈕,把方法二的程序都自動化。
               要使用的時候就按一下產生,選完後剪走,讓工作表1又保持乾淨空的狀態
               

現在目標有幾個
目前可以做到按下按鈕,就自動把篩選不重複後的東西,貼到某欄
但是可能現在篩選後有四種,但是參照表以後修改,可能篩選後會變六種
  1. With Sheets("工作表2")
  2.   .UsedRange.Range("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("工作表2").Range( _
  3.         "F1"), Unique:=True
  4. Set Rng =.Range("F1").CurrentRegion
  5. End With
複製代碼
<目標一>如何讓程式判斷,現在{清單}的[用途類別(科目)]..篩選後有幾種
<目標二>判斷有幾種後,將這個..幾種類別...設定給....工作表1的...[用途類別]那一欄...的下拉式選單
  1. Range("I1").Select
  2. With Selection.Validation
  3.     .Delete
  4.     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  5.     xlBetween, Formula1:=Sheets("工作表2").Rng   '"=工作表2!$C$2:$C$7"
  6.     .IgnoreBlank = True
  7.     .InCellDropdown = True
  8.     .InputTitle = ""
  9.     .ErrorTitle = ""
  10.     .InputMessage = ""
  11.     .ErrorMessage = ""
  12.     .IMEMode = xlIMEModeNoControl
  13.     .ShowInput = True
  14.     .ShowError = True
  15. End With
複製代碼
設定來源那邊有問題  Formula1:=

<目標三>自動設定50列都有下拉式選單
  1. Selection.AutoFill Destination:=Range("I1:I50"), Type:=xlFillDefault
複製代碼
<遠程目標>
若是目標一二都能達成,則   [用途類別] 的下拉選擇某一類後, [工作計畫]跟[用途別]可能自動產生相對應的值出來 (能參考{清單}中的表
例如:
[用途類別](I欄) 的下拉選擇......離職儲金   之後
那麼
[用途別](H欄),會自動放入.....人事費
[工作計畫](G欄),會自動放入....公司業務

如果程式有辦法做到的話
再麻煩版主及其他大大協助指點,謝謝
哈囉~大家好呀

TOP

利用"定義名稱"動態下拉清單:
Xl0000170(三層下拉清單).rar (17.81 KB)

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題