ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何通过worksheet_selectionchangep宏调用某指定行的宏?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-25 10:25 | 显示全部楼层 |阅读模式
一个工作表里设置有很多宏,每个宏对应一个特定的行运行的,请问如何设置“Private Sub Worksheet_SelectionChange(ByVal Target As Range)”,当在工作表里选择一个单元格时自动执行对应行的宏?




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 3 Or Target.Row < 64 Then Exit Sub
    '如果选中的单元格不是第2列,或者小于4行,也就是不在目标范围内,则退出程序
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
    '如果选中的单元格大于1个,则退出程序
    With Sheets("基本数据")
        ii = .ActiveCell.Row
       ss = .ActiveCell.Value
    End With
    Call ss      'ss代表某个对应某行的宏命令
End Sub


TA的精华主题

TA的得分主题

发表于 2024-1-25 11:55 | 显示全部楼层
楼主的需求描述,不是太明白的
如果选中某行执行指定代码
可以在事件代码中增加if判断,比如取target跟rows(x)的交集,如果存在,证明选中区域涉及x行,那么就执行代码。

不知道理解对不对的

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-25 12:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2024-1-25 11:55
楼主的需求描述,不是太明白的
如果选中某行执行指定代码
可以在事件代码中增加if判断,比如取target跟ro ...

版主,我的想法主要是有两点:一是如何把事件中得到的target单元格的行号传给另外的宏,其次是通过事件调用宏命令执行,因为得到target的单元格的值与宏名称相同。完成这两个目地,那么针对特定指行号参数的宏就可以随意调整行位置。

TA的精华主题

TA的得分主题

发表于 2024-1-25 12:46 | 显示全部楼层
逆天修炼 发表于 2024-1-25 12:37
版主,我的想法主要是有两点:一是如何把事件中得到的target单元格的行号传给另外的宏,其次是通过事件调 ...

行号参数不需要传递,用ActiveCell.Row就可以了

TA的精华主题

TA的得分主题

发表于 2024-1-25 12:55 | 显示全部楼层
逆天修炼 发表于 2024-1-25 12:37
版主,我的想法主要是有两点:一是如何把事件中得到的target单元格的行号传给另外的宏,其次是通过事件调 ...

另外一个宏,使用这种创灿的方式
sub ttt(rng)
end sub
applicationg.run target.value '这样可以运行target值相同的宏

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-25 13:24 | 显示全部楼层
liulang0808 发表于 2024-1-25 12:55
另外一个宏,使用这种创灿的方式
sub ttt(rng)
end sub

版主,我定义了公共变量ii,ss,但单元格事件中获取不到ii和ss的值,不知道为什么?
ii=target. Row
ss=target. Value

TA的精华主题

TA的得分主题

发表于 2024-1-25 13:33 | 显示全部楼层
逆天修炼 发表于 2024-1-25 13:24
版主,我定义了公共变量ii,ss,但单元格事件中获取不到ii和ss的值,不知道为什么?
ii=target. Row
ss= ...

把你的文件上传看看吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-25 17:43 | 显示全部楼层
liulang0808 发表于 2024-1-25 13:33
把你的文件上传看看吧

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 3 Or Target.Row < 64 Then Exit Sub
'如果选中的单元格不是第3列,或者小于64行,也就是不在目标范围内,则退出程序
If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
'如果选中的单元格大于1个,则退出程序
ii = ActiveCell.Cells.Row
Application.Run Target.Value
End Sub

我把ii定义为全局变量后,工作表单元格选定后发生第一次事件,这个产生的变量值ii可以传递给别的宏用,但是单元格选择改变之后,这个全局变量却不发生变化,仍然是第一次的赋值,请问版主这个如何处理?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 01:27 , Processed in 0.036093 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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