[算表] 如何自動化更新下拉式選單內容?

看板Office作者 (溫柔殺手)時間7年前 (2018/12/30 18:50), 7年前編輯推噓2(2033)
留言35則, 3人參與, 8年前最新討論串1/1
軟體:Excel 版本:2013 各位版上的大大好,小弟正在做一個供應商下拉式選單。 我有大約4-5個頁面會共用一份資料。 我目前是用Active X的下拉式選單。然後自己在程式碼中用AddItem去做。 可想而知,供應商會越來越多。我每次新增一個,就要打開這幾個頁面去新增Code。 感覺有點笨。 如果用表單控制項的方式,也是需要去更改每一個下拉式表單的範圍。 請問有沒有可以只做一次全體適用的方法呢? 煩請撥冗指導。感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.98.141 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1546167009.A.96D.html

12/30 19:21, 7年前 , 1F
不知道原po目前是怎麼寫的,就以原文來看也不清楚什麼是每
12/30 19:21, 1F

12/30 19:22, 7年前 , 2F
次新增一個,就要打開這幾個頁面去新增code
12/30 19:22, 2F

12/30 19:22, 7年前 , 3F
又什麼是只做一次全體適用的方法?適用在那?
12/30 19:22, 3F

12/30 19:23, 7年前 , 4F
提供有巨集碼的檔案才會比較清楚要的是什麼
12/30 19:23, 4F
@soyoso大大 不好意思,我增加一些資料如下。 Public Sub CLbox_GotFocus() With ActiveSheet.CLbox .Clear .AddItem "A" .AddItem "B" End With End Sub 目前我是這麼使用我的下拉式選單的。 其中A跟B就是我所說的供應商。 我的活頁簿中會有五個頁面會用到這個東西,也就是說會有CLbox1, CLbox2,...,CLbox5 如果今天我又新增加了一個供應商,哪麼我必須要在這個五個頁面的VBA程式碼,都針對 這個下拉式選單去增加.AddItem "C"。這個動作,感覺有點笨。 能不能夠寫一個按鈕什麼的去一次性的增加,而不要一個一個去增加。 ※ 編輯: yimean (123.195.98.141), 12/30/2018 19:58:22

12/30 19:58, 7年前 , 5F
@soyoso大大我更新資料了喔。
12/30 19:58, 5F

12/30 20:01, 7年前 , 6F
寫個迴圈additem,迴圈終止值或最後一個有值的儲存格以
12/30 20:01, 6F

12/30 20:02, 7年前 , 7F
range.end()、range.find或工作表函數counta抓取
12/30 20:02, 7F

12/30 20:04, 7年前 , 8F
好的,感謝,我試試看。
12/30 20:04, 8F

12/30 20:06, 7年前 , 9F
或是要以worksheet_change為觸發事件,當新增資料後,迴圈
12/30 20:06, 9F

12/30 20:08, 7年前 , 10F
指定表單或activex控制項內listfillrange範圍字串
12/30 20:08, 10F

12/30 20:10, 7年前 , 11F
範圍字串取得可用range.address
12/30 20:10, 11F
@soyoso大大,感謝指導。 我現在好像就差臨門一腳了。 我現在的程式長這樣 Public Sub CLbox_GotFocus() With ActiveSheet.CLbox .Clear AIR "共用資料", "C" End With End Sub Sub AIR(sheetname As String, columm_index As String) 'AIR stands for add item loop. 'This sub only works within this workbook. Dim st As Integer Dim i As Integer Dim items As String st = Application.WorksheetFunction.CountA(Sheets(sheetname).Range(columm_index & ":" & columm_index & "")) For i = 1 To st items = Sheets(sheetname).Range(columm_index & i & "").Value .AddItem items Next i End Sub 他說我的additem items是錯誤引用。 我應該怎麼用我這個Sub可以添加項目呢? 還是說,的想法錯誤,應該用Function來做? 煩請撥冗解惑,感恩。 ※ 編輯: yimean (123.195.98.141), 12/30/2018 20:46:21

12/30 20:46, 7年前 , 12F
@soyoso大大,我又更新資料了。
12/30 20:46, 12F

12/30 20:54, 7年前 , 13F
再多傳個CLbox到sub AIR,AIR多設個變數接收
12/30 20:54, 13F

12/30 20:55, 7年前 , 14F
.additem就以AIR所設 變數.additem
12/30 20:55, 14F

12/30 21:05, 7年前 , 15F
Cool!!!大感謝。
12/30 21:05, 15F

01/02 06:26, 8年前 , 16F
注意一個最大的問題 activeX 在不同的excel版本不相容
01/02 06:26, 16F

01/02 06:26, 8年前 , 17F
也就是如果你要向下或向下相容 這按鈕會失效
01/02 06:26, 17F

01/02 06:26, 8年前 , 18F
前提必須全部的人都要用2016以上的excel
01/02 06:26, 18F

01/02 06:28, 8年前 , 19F
或全部都要2007的
01/02 06:28, 19F

01/02 07:24, 8年前 , 20F
相容上測試,儲存於2016,開啟於2007或2010時,並不一定會
01/02 07:24, 20F

01/02 07:24, 8年前 , 21F
01/02 07:24, 21F

01/02 18:51, 8年前 , 22F
s大 我前一星期才碰上的 我的是2019 64位元寫好
01/02 18:51, 22F

01/02 18:51, 8年前 , 23F
放到2007 32位元 當下沒問題 使用了兩三天突然 按鈕
01/02 18:51, 23F

01/02 18:52, 8年前 , 24F
直接消失 但實際上存在 而且無法用visible控制顯示
01/02 18:52, 24F

01/02 18:57, 8年前 , 25F
就算重新寫上按鈕 還是消失
01/02 18:57, 25F

01/02 18:57, 8年前 , 26F
而且 另一個按鈕是反過來 不消失 永遠消失不掉
01/02 18:57, 26F

01/02 18:58, 8年前 , 27F
該頁面 我放上約15個activex的按鈕於工作表上
01/02 18:58, 27F

01/02 19:00, 8年前 , 28F
這也就是為什麼我要回並不一定會失效,因版本的不同,不能
01/02 19:00, 28F

01/02 19:00, 8年前 , 29F
而且會出現按鈕大小自動變大變小的問題
01/02 19:00, 29F

01/02 19:00, 8年前 , 30F
一概而論,但w大你回6點多回就是全部的人都要用某一個版本
01/02 19:00, 30F

01/02 19:01, 8年前 , 31F
一概而論,但w大你回6點多回就是全部的人都要用某一個版本
01/02 19:01, 31F

01/02 19:01, 8年前 , 32F
但實際上測試有可能是不一定要用同一版本的
01/02 19:01, 32F

01/02 19:02, 8年前 , 33F
瞭解 謝謝
01/02 19:02, 33F

01/02 19:03, 8年前 , 34F
回文您可以舉例再何種情況下是可能會產生出失效,但要說是
01/02 19:03, 34F

01/02 19:04, 8年前 , 35F
全部都要那個版本才是可行的話,個人覺得那不一定
01/02 19:04, 35F
文章代碼(AID): #1SAABXbj (Office)
文章代碼(AID): #1SAABXbj (Office)