Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: liwenhong

[已解决]怎样用按钮实现单元格事件?

[复制链接]
 楼主| 发表于 2014-4-10 23:44 | 显示全部楼层
本帖最后由 liwenhong 于 2014-4-10 23:48 编辑
冠军欧洲2010 发表于 2014-4-10 22:54
那用一公共变量,是这种效果?

我上传了问题原件,问题更清楚了,麻烦您看看!谢谢了

新附件在10楼
回复

使用道具 举报

 楼主| 发表于 2014-4-10 23:47 | 显示全部楼层
本帖最后由 liwenhong 于 2014-4-10 23:48 编辑
hwc2ycy 发表于 2014-4-10 22:54
要值真正改变时才触发是吧?
这样感觉不能完美实现,但有个办法
先是用selectionchange事件,先保存相关的 ...

版主您好!
我上传了问题原件,使问题更清楚了,麻烦您看看!您辛苦了!衷心感谢!          新附件在10楼
回复

使用道具 举报

 楼主| 发表于 2014-4-13 15:29 | 显示全部楼层
hwc2ycy 发表于 2014-4-10 22:54
要值真正改变时才触发是吧?
这样感觉不能完美实现,但有个办法
先是用selectionchange事件,先保存相关的 ...

     版主您好!
     我沿用您的思路,在点击“调入信息”按钮时,先确定被编辑的职工,还将该职工所在部门的单元格赋值给g2yuan。当点击“保存”按钮时,比较g2yuan和现在的G2单元格的值,若不同,就执行“px”的宏。但由于编程水平有限,没有达到效果,出现了无论G2变化与否都执行“px",还请您看看代码错在哪里?
附件: 部门变动时才排序,否则不要排序!.zip (476.65 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2014-4-13 16:20 | 显示全部楼层
liwenhong 发表于 2014-4-13 15:29
版主您好!
     我沿用您的思路,在点击“调入信息”按钮时,先确定被编辑的职工,还将该职工所在 ...

职工编辑对象中的g2yuan没有声明。
你在顶端添加
Dim g2yuan As Variant


评分

参与人数 1 +1 收起 理由
liwenhong + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-4-13 17:07 | 显示全部楼层
本帖最后由 liwenhong 于 2014-4-13 17:12 编辑
hwc2ycy 发表于 2014-4-13 16:20
职工编辑对象中的g2yuan没有声明。
你在顶端添加
Dim g2yuan As Variant

按您的提示去做了,即将 Dim g2yuan As Variant放在了代码的顶端,但还是不行,麻烦您再看看吧! 部门变动时才排序,否则不要排序!.zip (478.4 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2014-4-13 21:17 | 显示全部楼层
liwenhong 发表于 2014-4-13 17:07
按您的提示去做了,即将 Dim g2yuan As Variant放在了代码的顶端,但还是不行,麻烦您再看看吧!

是不能排序还是怎么?
其实你调试的时候,在PX代码下断点。
随便调一个人的资料,不修改部分,然后写入,看看是否会在px过程内暂停
再随便调一个人的资料,修改部门,然后写入,看看是否会在px过程内暂停。

这样就知道结果了。



评分

参与人数 1 +1 收起 理由
liwenhong + 1

查看全部评分

回复

使用道具 举报

发表于 2014-4-13 21:19 | 显示全部楼层
liwenhong 发表于 2014-4-13 17:07
按您的提示去做了,即将 Dim g2yuan As Variant放在了代码的顶端,但还是不行,麻烦您再看看吧!

你把这放在过程内有什么用了,说了是要放在模块顶端。
Dim g2yuan As Variant

位置放错了。
回复

使用道具 举报

发表于 2014-4-13 21:21 | 显示全部楼层
selectionchange事件也不写,之前好好的,就差一个声明,现在越整越废了。
回复

使用道具 举报

发表于 2014-4-13 21:28 | 显示全部楼层
  1. Dim g2yuan As Variant

  2. Private Sub CommandButton3_Click()        '调出“确定被编辑人员”窗体按钮
  3.     Application.ScreenUpdating = False
  4.     UserForm3.Show    '打开窗体3
  5.     Let g2yuan = Range("G2")    '先将原G2的值赋给g2yuan
  6.     Application.ScreenUpdating = True
  7. End Sub

  8. Private Sub CommandButton1_Click()       '保存信息按钮
  9.     If Range("B2") = "" Then Exit Sub
  10.     ZC    '执行模块5的代码
  11.     If Range("G2").Value <> g2yuan Then   '现G2的值和原来的值比较,若不同时执行px。
  12.         px
  13.     End If
  14. End Sub

  15. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  16.     If Intersect(Target, Range("g2")) Is Nothing Then Exit Sub
  17.     g2yuan = Range("g2").Value
  18. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
liwenhong + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-4-13 21:31 | 显示全部楼层
网速有点慢,附件传不上来,你就用这个代码替换 职工信息编辑 对象里的代码吧。

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 21:37 , Processed in 0.722300 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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