作者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/cn.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