作者yimean (溫柔殺手)
看板Office
標題[算表] 如何自動化更新下拉式選單內容?
時間Sun Dec 30 18:50:06 2018
軟體:Excel
版本:2013
各位版上的大大好,小弟正在做一個供應商下拉式選單。
我有大約4-5個頁面會共用一份資料。
我目前是用Active X的下拉式選單。然後自己在程式碼中用AddItem去做。
可想而知,供應商會越來越多。我每次新增一個,就要打開這幾個頁面去新增Code。
感覺有點笨。
如果用表單控制項的方式,也是需要去更改每一個下拉式表單的範圍。
請問有沒有可以只做一次全體適用的方法呢?
煩請撥冗指導。感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.98.141
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1546167009.A.96D.html
1F:→ soyoso: 不知道原po目前是怎麼寫的,就以原文來看也不清楚什麼是每 12/30 19:21
2F:→ soyoso: 次新增一個,就要打開這幾個頁面去新增code 12/30 19:22
3F:→ soyoso: 又什麼是只做一次全體適用的方法?適用在那? 12/30 19:22
4F:→ soyoso: 提供有巨集碼的檔案才會比較清楚要的是什麼 12/30 19:23
@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
5F:→ yimean: @soyoso大大我更新資料了喔。 12/30 19:58
6F:→ soyoso: 寫個迴圈additem,迴圈終止值或最後一個有值的儲存格以 12/30 20:01
7F:→ soyoso: range.end()、range.find或工作表函數counta抓取 12/30 20:02
8F:→ yimean: 好的,感謝,我試試看。 12/30 20:04
9F:→ soyoso: 或是要以worksheet_change為觸發事件,當新增資料後,迴圈 12/30 20:06
10F:→ soyoso: 指定表單或activex控制項內listfillrange範圍字串 12/30 20:08
11F:→ soyoso: 範圍字串取得可用range.address 12/30 20:10
@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
12F:→ yimean: @soyoso大大,我又更新資料了。 12/30 20:46
13F:→ soyoso: 再多傳個CLbox到sub AIR,AIR多設個變數接收 12/30 20:54
14F:→ soyoso: .additem就以AIR所設 變數.additem 12/30 20:55
15F:→ yimean: Cool!!!大感謝。 12/30 21:05
16F:推 waiter337: 注意一個最大的問題 activeX 在不同的excel版本不相容 01/02 06:26
17F:→ waiter337: 也就是如果你要向下或向下相容 這按鈕會失效 01/02 06:26
18F:→ waiter337: 前提必須全部的人都要用2016以上的excel 01/02 06:26
19F:→ waiter337: 或全部都要2007的 01/02 06:28
20F:→ soyoso: 相容上測試,儲存於2016,開啟於2007或2010時,並不一定會 01/02 07:24
22F:推 waiter337: s大 我前一星期才碰上的 我的是2019 64位元寫好 01/02 18:51
23F:→ waiter337: 放到2007 32位元 當下沒問題 使用了兩三天突然 按鈕 01/02 18:51
24F:→ waiter337: 直接消失 但實際上存在 而且無法用visible控制顯示 01/02 18:52
25F:→ waiter337: 就算重新寫上按鈕 還是消失 01/02 18:57
26F:→ waiter337: 而且 另一個按鈕是反過來 不消失 永遠消失不掉 01/02 18:57
27F:→ waiter337: 該頁面 我放上約15個activex的按鈕於工作表上 01/02 18:58
28F:→ soyoso: 這也就是為什麼我要回並不一定會失效,因版本的不同,不能 01/02 19:00
29F:→ waiter337: 而且會出現按鈕大小自動變大變小的問題 01/02 19:00
30F:→ soyoso: 一概而論,但w大你回6點多回就是全部的人都要用某一個版本 01/02 19:00
31F:→ soyoso: 一概而論,但w大你回6點多回就是全部的人都要用某一個版本 01/02 19:01
32F:→ soyoso: 但實際上測試有可能是不一定要用同一版本的 01/02 19:01
33F:→ waiter337: 瞭解 謝謝 01/02 19:02
34F:→ soyoso: 回文您可以舉例再何種情況下是可能會產生出失效,但要說是 01/02 19:03
35F:→ soyoso: 全部都要那個版本才是可行的話,個人覺得那不一定 01/02 19:04