ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1515|回复: 5

[求助] 求大神帮忙实现,同一表格 点击不同控件按钮 对应列生成多级菜单

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-10 16:37 | 显示全部楼层 |阅读模式
本帖最后由 blm860606 于 2018-8-10 17:08 编辑

1号 表格 两个控件按钮   想实现:  单击按钮1   A列读取李老板的产品数据;单击按钮2  D列读取王老板的产品的数据


我是小白  代码一窍不通,这是复制其他大神的代码,但是想修改下。研究了一天了,弄不成。
求助.png

求助大神.zip

23.82 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-10 16:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
麻烦各位大神,怎么样在同一个表格,不同按钮对应不同列,实现多级菜单

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-10 16:47 | 显示全部楼层
好像上传的表格:没有宏。这里说下吧。。。。
上图模块1因为其他大神的函数:

Dim Tree
Sub main()
    Dim mybar As Object, arr, i&, j&, key$, myb, pkey$
    Dim N_col As Long
    On Error Resume Next
    Set Tree = CreateObject("Scripting.Dictionary")
    Application.CommandBars("myCell").Delete
    Set mybar = Application.CommandBars.Add(Name:="myCell", Position:=msoBarPopup)
    Tree.Add "myCell", mybar
    arr = Range("省市区数据!a1").CurrentRegion.Value
    N_col = UBound(arr, 2)
    ReDim Preserve arr(1 To UBound(arr, 1), 1 To N_col + 1)
    For j = 2 To UBound(arr, 1)
        If Not Tree.exists(arr(j, 1)) Then
            If arr(j, 2) = "" Then
                AddControlButton "myCell", arr(j, 1), arr(j, 1), j, N_col
            Else
                AddControlPopup "myCell", arr(j, 1), arr(j, 1)
            End If
        End If
    Next
    For i = 2 To UBound(arr)
        key = arr(i, 1)
        For j = 2 To N_col
            If arr(i, j) <> "" Then
                pkey = key
                key = key & "\" & arr(i, j)
                If arr(i, j + 1) = "" Then
                    AddControlButton pkey, key, arr(i, j), i, N_col
                Else
                    If Not Tree.exists(key) Then
                        AddControlPopup pkey, key, arr(i, j)
                    End If
                End If
            End If
        Next
    Next
    Set mybar = Nothing
End Sub

Private Sub AddControlButton(ByVal pkey$, ByVal key$, ByVal caption$, ByVal i&, ByVal n&)
    Dim myb
    Set myb = Tree(pkey).Controls.Add(Type:=msoControlButton)
    With myb
        .caption = caption
        .OnAction = "'WriteToRng " & i & "," & n & "'"
    End With
    Tree.Add key, myb
End Sub

Private Sub AddControlPopup(ByVal pkey$, ByVal key$, ByVal caption$)
    Dim myb
    Set myb = Tree(pkey).Controls.Add(Type:=msoControlPopup)
    myb.caption = caption
    Tree.Add key, myb
End Sub
Public Sub WriteToRng(i, N_col)
    Dim arr
    arr = Sheets("省市区数据").Range("A" & i).Resize(1, N_col).Value
    ActiveCell.Value = Join(Application.Index(arr, 1, 0), "")
End Sub
Sub 测试代码执行时间()
  Dim tim1 As Date



   main
MsgBox "省市区加载成功!请点击A列查看效果!"
End Sub
Public Sub SubPopBar(keys() As Variant)

    Dim intI As Integer, subB
    Dim mybar As CommandBar
    Set subB = CommandBars("myCell")
    On Error Resume Next
    For intI = 0 To UBound(keys)
        If keys(intI) <> "" Then
            Set subB = subB.Controls(keys(intI))
           
            If subB.Type = 1 Then Application.CommandBars("myCell").ShowPopup: Exit Sub
        Else
            Application.CommandBars("myCell").ShowPopup
            Exit Sub
        End If
    Next intI
    On Error Resume Next
    Application.CommandBars("myCellx").Delete
    Set mybar = Application.CommandBars.Add(Name:="myCellx", Position:=msoBarPopup)
    For intI = 1 To subB.Controls.Count
        subB.Controls(intI).Copy Bar:=mybar
    Next
    Application.CommandBars("myCellx").ShowPopup
End Sub
---------------------------------------------我把”省市县数据:改成李老板的产品

模块2:还是引用上诉代码    ---------------把省市县数据:改成  王老板的产品

sheet1(1号)引用其他大神代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim a(), i
    On Error Resume Next
    If Target.Count = 1 Then
        If Target.Column = 1 Then
            With Application.CommandBars("myCell")
                .ShowPopup
            End With
        End If
    End If
   
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-10 16:53 | 显示全部楼层
楼主最好是把你搞的带有原始代码的附件传上来,你表达的很不清楚

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-10 16:58 | 显示全部楼层
对不住  这次应该可以了

求助大神.zip

23.82 KB, 下载次数: 6

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-10 16:59 | 显示全部楼层
专搞excel 发表于 2018-8-10 16:53
楼主最好是把你搞的带有原始代码的附件传上来,你表达的很不清楚

您在看下,费心了

求助大神.zip

23.82 KB, 下载次数: 12

这个保存启用宏了

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 20:51 , Processed in 0.020560 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表