作者yimean (温柔杀手)
看板Office
标题[算表] VBA下拉式选单触发问题
时间Thu Sep 20 16:18:50 2018
软体:Excel
版本:2007
各位板上的大大下午好,我写了一个VBA用於纪录接单资料。
其中包含了一个下拉选单。一个资料清除按钮,一个资料储存按钮。
下拉式选单是选择接单单位,资料清除按钮是在资料储存之後把页面上的资料全部清除。
目前有遇到一个问题,我在下拉式选单有预设一个值,该值目的是为了提醒使用者要记
得选取。
但是当使用者Key完了一张单子之後,不会关闭页面就继续Key下一张单子,下拉式选单
会保持在使用者上一次选取的状态。
如果使用者忘了修改,那麽就有可能会输入错的值。
所以我想在按下资料清除按钮之後,把下拉式的选单回归到预设值,请问应该要怎麽做?
下方是我目前下拉式选单的程式。
Public Sub Order_taking_department_GotFocus()
With ActiveSheet.Order_taking_department
.AddItem "A单位"
.AddItem "B单位"
.Value = "请选择接单单位"
End With
End Sub
Private Sub Order_taking_department_Change()
'下拉选单
[A1].Value = Order_taking_department.Value
End Sub
因为我不知道应该要怎麽样用VBA去触发GotFocus。
烦请大大指导,感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.98.141
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1537431532.A.74A.html
※ 编辑: yimean (123.195.98.141), 09/20/2018 16:20:52
1F:→ soyoso: 是指回归预设值是指?gotfocus重覆触发下会持续新增item, 09/20 16:28
2F:→ soyoso: 而希望只显示a,b单位吗? 09/20 16:29
3F:→ soyoso: 如果是的话可先在additem前先clear 09/20 16:29
4F:→ yimean: 是当我按下清除资料按钮的时候,我的下拉式选单会显示 09/20 16:32
5F:→ yimean: "请选择接单单位" 09/20 16:32
6F:→ soyoso: 那在按钮触发时,将order_taking_department= "请选择接单 09/20 16:42
7F:→ soyoso: 单位";这里已触发了下拉选单change事件,所以在change内 09/20 16:43
8F:→ soyoso: 判断当order_taking_department非<>"请选择接单单位"时填 09/20 16:44
9F:→ soyoso: 入资料 09/20 16:44
10F:→ yimean: 不好意思请问"非<>"这个是代表什麽意思? 09/21 08:28
11F:→ yimean: Change事件不是我要去按他选择值才算触发吗? 09/21 08:31
12F:→ yimean: 所以,这个程式其实很有问题,一旦我一直去点选,那我的 09/21 08:33
13F:→ yimean: Item就会一直增加。如果是这样的状况我应该要怎麽处理? 09/21 08:34
14F:→ yimean: 书上的范例是这样写的~>.<~ 09/21 08:35
15F:→ yimean: 哈哈 我看到了,您第三行就解答我的疑惑了。感谢。 09/21 08:37
16F:→ yimean: 接下来我的问题还是,如何用另外一个按钮,来让下拉式选单 09/21 08:38
17F:→ yimean: 显示Default的状态。 09/21 08:38
18F:→ newacc: 如果把AddItem写在Worksheet_Initialize()里,然後按钮就 09/21 09:36
19F:→ newacc: 只需要触发把Value改成预设,会不会比较好实作? 09/21 09:36
20F:→ soyoso: 非<>是指不等於"请选择接单单位" 09/21 09:38
21F:→ soyoso: 写法为 order_taking_department <> "请选择接单单位" 09/21 09:39
22F:→ soyoso: 另外一个按妞,来让下拉式选单显示default("请选择接单单 09/21 09:40
23F:→ soyoso: 位")的状态上,回文在按钮触发时,order_taking_departmen 09/21 09:41
24F:→ soyoso: t= "请选择接单单位",来显示default的值方面是否合适呢 09/21 09:43
感谢两位大大的指导。
@Soyoso
请问一下如果依照您的指导,程式码是不是应该变成如下?
Private sub button_Click()
CleanData
Order_taking_department = "请选择接单单位"
End Sub
Public Sub Order_taking_department_GotFocus()
With ActiveSheet.Order_taking_department
.Clean
.AddItem "A单位"
.AddItem "B单位"
Order_taking_department <> "请选择接单单位"
End With
End Sub
Private Sub Order_taking_department_Change()
'下拉选单
[A1].Value = Order_taking_department.Value
End Sub
※ 编辑: yimean (114.33.116.8), 09/21/2018 11:46:37
25F:→ yimean: 资料更新 09/21 11:46
26F:→ newacc: %Private Sub button_Click() 09/21 12:15
27F:→ newacc: CleanData 09/21 12:15
28F:→ newacc: Order_taking_department = "请选择接单单位" 09/21 12:15
29F:→ newacc: End Sub 09/21 12:15
30F:→ newacc: 09/21 12:15
31F:→ newacc: Public Sub Order_taking_department_GotFocus() 09/21 12:15
32F:→ newacc: With ActiveSheet.Order_taking_department 09/21 12:15
33F:→ newacc: .Clean 09/21 12:15
34F:→ newacc: .AddItem "A单位" 09/21 12:15
35F:→ newacc: .AddItem "B单位" 09/21 12:15
36F:→ newacc: End With 09/21 12:15
37F:→ newacc: End Sub 09/21 12:15
38F:→ newacc: 09/21 12:15
39F:→ newacc: Private Sub Order_taking_department_Change() 09/21 12:15
40F:→ newacc: '下拉选单 09/21 12:15
41F:→ newacc: If Order_taking_department <> "请选择接单单位" Then 09/21 12:15
42F:→ newacc: [A1].Value = Order_taking_department.Value 09/21 12:15
43F:→ newacc: End If 09/21 12:15
44F:→ newacc: End Sub 09/21 12:19
45F:→ newacc: 这样做的原因是你赋予选单value的时候,就会触发Change 09/21 12:20
46F:→ newacc: event,因此在里面加一个判断,如果是预设值代表使用者尚 09/21 12:20
47F:→ newacc: 未选择,所以只有不等於预设值时才要写入[A1] 09/21 12:21
48F:→ soyoso: 原po或n大测试上.clean都不会出错? 09/21 13:48
49F:→ soyoso: 测试是出现执行阶段错误'438,物件不支援此属性或方法 09/21 13:49
50F:→ soyoso: 如回文为 .clear的方式 09/21 13:50
51F:→ yimean: @Soyoso大大抱歉,您是对的。.Clear 09/21 14:02
※ 编辑: yimean (114.33.116.8), 09/21/2018 14:15:49
52F:→ yimean: @newacc 感谢我试试看。 09/21 14:16
53F:→ newacc: 被抓到我没有测试了( ̄▽ ̄#)﹏﹏ 09/21 18:22