看板 Office 關於我們 聯絡資訊
軟體: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
soyoso: 不知道原po目前是怎麼寫的,就以原文來看也不清楚什麼是每 12/30 19:21
soyoso: 次新增一個,就要打開這幾個頁面去新增code 12/30 19:22
soyoso: 又什麼是只做一次全體適用的方法?適用在那? 12/30 19:22
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
yimean: @soyoso大大我更新資料了喔。 12/30 19:58
soyoso: 寫個迴圈additem,迴圈終止值或最後一個有值的儲存格以 12/30 20:01
soyoso: range.end()、range.find或工作表函數counta抓取 12/30 20:02
yimean: 好的,感謝,我試試看。 12/30 20:04
soyoso: 或是要以worksheet_change為觸發事件,當新增資料後,迴圈 12/30 20:06
soyoso: 指定表單或activex控制項內listfillrange範圍字串 12/30 20:08
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
yimean: @soyoso大大,我又更新資料了。 12/30 20:46
soyoso: 再多傳個CLbox到sub AIR,AIR多設個變數接收 12/30 20:54
soyoso: .additem就以AIR所設 變數.additem 12/30 20:55
yimean: Cool!!!大感謝。 12/30 21:05
waiter337: 注意一個最大的問題 activeX 在不同的excel版本不相容 01/02 06:26
waiter337: 也就是如果你要向下或向下相容 這按鈕會失效 01/02 06:26
waiter337: 前提必須全部的人都要用2016以上的excel 01/02 06:26
waiter337: 或全部都要2007的 01/02 06:28
soyoso: 相容上測試,儲存於2016,開啟於2007或2010時,並不一定會 01/02 07:24
soyoso: 失效 https://i.imgur.com/Jtzf37w.jpg 01/02 07:24
waiter337: s大 我前一星期才碰上的 我的是2019 64位元寫好 01/02 18:51
waiter337: 放到2007 32位元 當下沒問題 使用了兩三天突然 按鈕 01/02 18:51
waiter337: 直接消失 但實際上存在 而且無法用visible控制顯示 01/02 18:52
waiter337: 就算重新寫上按鈕 還是消失 01/02 18:57
waiter337: 而且 另一個按鈕是反過來 不消失 永遠消失不掉 01/02 18:57
waiter337: 該頁面 我放上約15個activex的按鈕於工作表上 01/02 18:58
soyoso: 這也就是為什麼我要回並不一定會失效,因版本的不同,不能 01/02 19:00
waiter337: 而且會出現按鈕大小自動變大變小的問題 01/02 19:00
soyoso: 一概而論,但w大你回6點多回就是全部的人都要用某一個版本 01/02 19:00
soyoso: 一概而論,但w大你回6點多回就是全部的人都要用某一個版本 01/02 19:01
soyoso: 但實際上測試有可能是不一定要用同一版本的 01/02 19:01
waiter337: 瞭解 謝謝 01/02 19:02
soyoso: 回文您可以舉例再何種情況下是可能會產生出失效,但要說是 01/02 19:03
soyoso: 全部都要那個版本才是可行的話,個人覺得那不一定 01/02 19:04