+ -
当前位置:首页 → 问答吧 → 请求制作一个下拉式菜单

请求制作一个下拉式菜单

时间:2010-05-21

来源:互联网

如附件,要求的叙述在附件工作薄“进货明细”的工作表“进货明细”中,只是一句话,打开附件便知。
    做这个下拉式菜单不拘形式,用 VBA 代码实现可以,用“数据有效性”的技术去实现也可以,总之,只要能满足我叙述的要求就行。
    恳请各位大侠帮忙解决,万分感谢。

附件

100521-蓝星经销.rar(36.7 KB)

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

好像工作表做的不对吧?如果想完成函数可能不行,如果两个工作薄合并用函数有法。这个我看非得用vba.等高手吧!

作者: 非常爱学   发布时间: 2010-05-21

师傅,您在 3 楼的醒的“注意”我知道了,谢谢您能够如此细心,谢谢您。
    关于工作薄“厂商信息”的工作表“信息登记”中 C5:C65536 范围内“厂商编号”不重复的问题,我想在 C5:C65536 范围内设置“数据不准重复”的代码,或者用“数据有效性”的技术去设置,应该能够控制住这个问题的。
   这些只是想法,但我却不会做,我还得请求别人,唉,没知识真是可怜。师傅,如果您有时间的话,能不能也一并解决我的这个潜在的问题?
谢谢您。

作者: 如饥似渴   发布时间: 2010-05-21

在“进货明细”工作薄Open事件中复制以下代码:
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
...
5楼的代码做的很好,提醒LZ将代码放于某个按钮下,不要放在Workbook_Open()事件中(鉴于前面的代码)

作者: abdias520   发布时间: 2010-05-21

cm6705 大师,您好!首先谢谢您对我的帮助,谢谢您。
    我把您 6 楼的代码放进“进货明细”工作薄里了,但我不知 Open事件 是什么意思,我没有见过,更是没有办法布局了,当然也就看不到什么效果。
    cm6705 大师,请您再帮忙一下,把您写的代码放进我在 1 楼的附件中,测试后再把附件上传给我好吗?谢谢您了,cm6705 大师。

作者: 如饥似渴   发布时间: 2010-05-21

请测试,见附件:

附件

100521-蓝星经销.zip(51.69 KB)

2010-5-21 18:11, 下载次数: 34

作者: cm6705   发布时间: 2010-05-21

abdias520 师傅,您好!
    您在 7 楼写到“6楼的代码做的很好,提醒LZ将代码放于某个按钮下,不要放在Workbook_Open()事件中(鉴于前面的代码)”,可是,我如何去做呢?我一无所知,看看我 8 楼的回帖就知道我这方面的程度了,其实,我是个知识匮乏的人,所以处处需要求人帮助。
    abdias520 师傅,请您再帮忙一下,把您写的代码放进我在 1 楼的附件中,测试后再把附件上传给我好吗?谢谢您了,abdias520 师傅。
    另外,我在 5 楼的请求您是否考虑再帮我一下?那主要是要从源头杜绝重复编号。

作者: 如饥似渴   发布时间: 2010-05-21

cm6705 大师,您 9 楼的附件我下载了,测试了,效果相当好,从中学到了如何放置 Open事件 的代码了,谢谢您。
    另外,关于工作薄“厂商信息”的工作表“信息登记”中 C5:C65536 范围内“厂商编号”不重复的问题,我想在 C5:C65536 范围内设置“数据不准重复”的代码,或者用“数据有效性”的技术去设置,应该能够控制住这个源头问题的。可是,我只会想却不会做,能否再帮忙解决一下这个与本贴问题相关联的潜在问题?
    谢谢您了,cm6705 大师。

作者: 如饥似渴   发布时间: 2010-05-21

cm6705 大师,您好,又来打扰您了,不好意思。
    您 9 楼的附件我是单独测试的,效果不错,可是,工作薄“进货明细”中并不只是“进货明细”这一个工作表,还有其它几个相关联的工作表,那些中都附有VBA代码,我把那几个工作表和您 9 楼附件的工作表合并到同一个工作薄“进货明细”中之后,您在 9 楼附件中的那一段“下拉式菜单”的代码就不灵了,失去了作用,这是什么原因呢?是几个工作表中的代码相互抵触?还是其它什么原因?我不知所措。
    现将“下拉式菜单”代码失灵的文件上传在附件位置,恳请 cm6705 大师 帮忙诊断,并救死扶伤,使我的附件中的几个工作表中的代码都能发挥各自的作用,谢谢您,谢谢。

[ 本帖最后由 如饥似渴 于 2010-5-21 18:55 编辑 ]

附件

100521-蓝星经销.rar(58.61 KB)

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

cm6705 大师,您好!
    根据您 13 楼的指点,我恍然大悟,哦?是我合并工作表时,把工作表的名称写错了,我这个外行哪里知道呢?
    我已经按照您的方法改好了,测试了,成功了,谢谢了,我的师傅!

作者: 如饥似渴   发布时间: 2010-05-21

100521-1-蓝星经销.rar (60.82 KB)
100521-1-蓝星经销.rar (60.82 KB)
下载次数: 23
2010-5-21 19:34

于进货明细中增加更新厂商编号有效性按钮,去掉打开时更新厂商编号有效性代码

作者: abdias520   发布时间: 2010-05-21

您 15 楼的附件我下载了,测试结果很好,我决定就按照您 15 楼的附件去做,谢谢您,我的师傅。

作者: 如饥似渴   发布时间: 2010-05-21

太神奇了!

作者: 忘得快   发布时间: 2011-08-08