请求制作一个下拉式菜单
时间:2010-05-21
来源:互联网
做这个下拉式菜单不拘形式,用 VBA 代码实现可以,用“数据有效性”的技术去实现也可以,总之,只要能满足我叙述的要求就行。
恳请各位大侠帮忙解决,万分感谢。
附件

2010-5-21 15:28, 下载次数: 23
作者: 如饥似渴 发布时间: 2010-05-21

作者: 非常爱学 发布时间: 2010-05-21
引用:
请求在本工作表 I5:I65536 范围内的单元格中建立下拉式菜单,可供选择的项目来源于:工作薄“厂商信息”的工作表“信息登记”中 C5:C65536 范围内不重复的所有“厂商编号”。
[ 本帖最后由 abdias520 于 2010-5-21 17:43 编辑 ]
作者: abdias520 发布时间: 2010-05-21

作者: 非常爱学 发布时间: 2010-05-21
关于工作薄“厂商信息”的工作表“信息登记”中 C5:C65536 范围内“厂商编号”不重复的问题,我想在 C5:C65536 范围内设置“数据不准重复”的代码,或者用“数据有效性”的技术去设置,应该能够控制住这个问题的。
这些只是想法,但我却不会做,我还得请求别人,唉,没知识真是可怜。师傅,如果您有时间的话,能不能也一并解决我的这个潜在的问题?
谢谢您。
作者: 如饥似渴 发布时间: 2010-05-21
Private Sub Workbook_Open()
On Error Resume Next
Dim Col As New Collection
Dim rng As Range, Cellion As String
Application.ScreenUpdating = False
Workbooks.Open ThisWorkbook.Path & "\厂商信息.xls"
ThisWorkbook.Activate
With Workbooks("厂商信息.xls").Sheets("信息登记")
Myr = .[c65536].End(3).Row
For Each rng In .Range("c5:c" & Myr)
If Trim(rng) <> "" Then
Col.Add rng, key:=CStr(rng)
End If
Next
For i = 1 To Col.Count
Cellion = Cellion & Col(i) & ","
Next
End With
With Sheets("进货明细").Range("i5:i65536").Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Cellion
End With
Workbooks("厂商信息.xls").Close
Application.ScreenUpdating = True
End Sub
代码能去除数据源的重复值。
[ 本帖最后由 cm6705 于 2010-5-21 17:38 编辑 ]
作者: cm6705 发布时间: 2010-05-21
引用:
原帖由 cm6705 于 2010-5-21 17:36 发表在“进货明细”工作薄Open事件中复制以下代码:
Private Sub Workbook_Open()
On Error Resume Next
Dim Col As New Collection
Dim rng As Range, Cellion As String
Application.ScreenUpdating = False
...
作者: abdias520 发布时间: 2010-05-21
我把您 6 楼的代码放进“进货明细”工作薄里了,但我不知 Open事件 是什么意思,我没有见过,更是没有办法布局了,当然也就看不到什么效果。
cm6705 大师,请您再帮忙一下,把您写的代码放进我在 1 楼的附件中,测试后再把附件上传给我好吗?谢谢您了,cm6705 大师。
作者: 如饥似渴 发布时间: 2010-05-21
附件

2010-5-21 18:11, 下载次数: 34
作者: cm6705 发布时间: 2010-05-21
您在 7 楼写到“6楼的代码做的很好,提醒LZ将代码放于某个按钮下,不要放在Workbook_Open()事件中(鉴于前面的代码)”,可是,我如何去做呢?我一无所知,看看我 8 楼的回帖就知道我这方面的程度了,其实,我是个知识匮乏的人,所以处处需要求人帮助。
abdias520 师傅,请您再帮忙一下,把您写的代码放进我在 1 楼的附件中,测试后再把附件上传给我好吗?谢谢您了,abdias520 师傅。
另外,我在 5 楼的请求您是否考虑再帮我一下?那主要是要从源头杜绝重复编号。
作者: 如饥似渴 发布时间: 2010-05-21
另外,关于工作薄“厂商信息”的工作表“信息登记”中 C5:C65536 范围内“厂商编号”不重复的问题,我想在 C5:C65536 范围内设置“数据不准重复”的代码,或者用“数据有效性”的技术去设置,应该能够控制住这个源头问题的。可是,我只会想却不会做,能否再帮忙解决一下这个与本贴问题相关联的潜在问题?
谢谢您了,cm6705 大师。
作者: 如饥似渴 发布时间: 2010-05-21
您 9 楼的附件我是单独测试的,效果不错,可是,工作薄“进货明细”中并不只是“进货明细”这一个工作表,还有其它几个相关联的工作表,那些中都附有VBA代码,我把那几个工作表和您 9 楼附件的工作表合并到同一个工作薄“进货明细”中之后,您在 9 楼附件中的那一段“下拉式菜单”的代码就不灵了,失去了作用,这是什么原因呢?是几个工作表中的代码相互抵触?还是其它什么原因?我不知所措。
现将“下拉式菜单”代码失灵的文件上传在附件位置,恳请 cm6705 大师 帮忙诊断,并救死扶伤,使我的附件中的几个工作表中的代码都能发挥各自的作用,谢谢您,谢谢。
[ 本帖最后由 如饥似渴 于 2010-5-21 18:55 编辑 ]
附件

2010-5-21 18:55, 下载次数: 17
作者: 如饥似渴 发布时间: 2010-05-21
引用:
原帖由 如饥似渴 于 2010-5-21 18:51 发表cm6705 大师,您好,又来打扰您了,不好意思。
您 9 楼的附件我是单独测试的,效果不错,可是,工作薄“进货明细”中并不只是“进货明细”这一个工作表,还有其它几个相关联的工作表,那些中都附有VBA代码,我把 ...
原语句: With Workbooks("厂商信息.xls").Sheets("厂商登记")
修改后: With Workbooks("厂商信息.xls").Sheets("厂商信息")
就可以了。至于你所说的防止厂商编号重复输入,我给你的代码中能将重复值去除,可以不必担心。
作者: cm6705 发布时间: 2010-05-21
根据您 13 楼的指点,我恍然大悟,哦?是我合并工作表时,把工作表的名称写错了,我这个外行哪里知道呢?
我已经按照您的方法改好了,测试了,成功了,谢谢了,我的师傅!
作者: 如饥似渴 发布时间: 2010-05-21

于进货明细中增加更新厂商编号有效性按钮,去掉打开时更新厂商编号有效性代码
作者: abdias520 发布时间: 2010-05-21
作者: 如饥似渴 发布时间: 2010-05-21
作者: 忘得快 发布时间: 2011-08-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28