ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多级联动菜单的修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-13 09:46 | 显示全部楼层 |阅读模式
本帖最后由 ndt3 于 2020-6-13 10:03 编辑

多级联动菜单.zip (64.89 KB, 下载次数: 12)

在论坛里找了老师的代码,想修改运用碰到了如下问题:


1、如何更改使用区域(使用行、列的变动怎么去修改代码),如:现在的定位是BC列如何修改为FG列,或者不连续的列(K、N列)?目前的处理方式有问题,会将去掉的那一级单元格清空

2、如何更改级数,目的是从三级变为两级。
麻烦哪位老师讲解一下,或者代码加下注释,实在看不懂

代码请见附件,谢谢各位老师!





TA的精华主题

TA的得分主题

发表于 2020-6-13 10:10 | 显示全部楼层
1、修改为
    arr = Range("省市区数据!b1").CurrentRegion.value
2、修改为
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim a(), i
    On Error Resume Next
    If Target.CountLarge = 1 Then
        If Target.Column = 1 Or Target.Column = 6 Or Target.Column = 11 Then
            With Application.CommandBars("myCell")
                .ShowPopup
            End With
        End If
    End If   
End Sub
试试

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-13 10:21 | 显示全部楼层
请参考
Public Sub WriteToRng(i, N_col)
    ActiveCell.EntireRow.Cells(1, myc).Resize(1, N_col) = Sheets("省市区数据").Range("A" & i).Resize(1, N_col).value
End Sub

TA的精华主题

TA的得分主题

发表于 2020-6-13 10:24 | 显示全部楼层
试试
多级联动菜单.zip (125.98 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2020-6-13 10:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
多级联动菜单-3级取2级,方便查找!
多级联动菜单-3级取2级.zip (137.59 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-13 10:32 | 显示全部楼层

Public Sub WriteToRng(i, N_col)
    ActiveCell.EntireRow.Cells(1, myc).Resize(1, N_col) = Sheets("省市区数据").Range("A" & i).Resize(1, N_col).value
End Sub

谢谢老师,看到控制点了。
上面这段,怎么改可跳开输入,模拟数据分别输入在K、N列中的情况?谢谢!

TA的精华主题

TA的得分主题

发表于 2020-6-13 10:33 | 显示全部楼层
本帖最后由 YZC51 于 2020-6-13 11:27 编辑

请参考5楼附件多级联动菜单-3级取2级

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-13 10:42 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim a(), i
    On Error Resume Next
    If Target.CountLarge = 1 And Selection.Row > 2 Then‘控制从第几行开始
    myc = Target.Column
    myh = Target.Count
   
        If myc = 6 Then
            With Application.CommandBars("myCell")
                .ShowPopup
            End With
        End If
    End If
   
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-13 10:48 | 显示全部楼层
YZC51 发表于 2020-6-13 10:33
请参考4楼附件多级联动菜单-3级取2级

谢谢老师,测试K列选择,区县任然不能偏移到N列中

TA的精华主题

TA的得分主题

发表于 2020-6-13 11:18 | 显示全部楼层
ndt3 发表于 2020-6-13 10:48
谢谢老师,测试K列选择,区县任然不能偏移到N列中

替换下面过程试试
  1. Public Sub WriteToRng(i, N_col)
  2.     If myc = 11 Then
  3.         ActiveCell.EntireRow.Cells(1, myc).Resize(1, 1) = Sheets("省市区数据").Range("B" & i).Resize(1, N_col).value
  4.         ActiveCell.EntireRow.Cells(1, myc + 3).Resize(1, 1) = Sheets("省市区数据").Range("C" & i).Resize(1, N_col).value
  5.     Else
  6.         ActiveCell.EntireRow.Cells(1, myc).Resize(1, N_col) = Sheets("省市区数据").Range("B" & i).Resize(1, N_col).value
  7.     End If
  8. End Sub
复制代码

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-4-28 22:55 , Processed in 0.048852 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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