Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10334|回复: 13

[分享] 一个由单元格颜色改变触发的事件--类模块应用

[复制链接]
发表于 2007-10-19 02:28 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2012-7-11 16:39 编辑

起因是这个帖子http://www.excelpx.com/forum.php?mod=viewthread&tid=27647,我觉得答案始终达不到要求,用类模块可能可以达到要求,于是搞了好久,终于弄出这个东西,但是,其中定时器部份是参考别人的,我还不太会引用DLL[em04],想不用定时器,但想不到好办法,可能真的要用到VB?大家一起参详一下不用定时器的办法,程序可以怎样改进[em04]

单元格颜色改变,并不会触发Worksheet_Change事件,但可触发这个单元格颜色改变事件。


这个类是模拟Worksheet_Change事件的,工作簿打开或工作表激活都会执行,不用按开始按钮,但如果想进入控件编辑状态,最好先按停止按钮,否则会出错,我也不知道为啥,所以加了两个按钮。

[此贴子已经被作者于2007-10-21 9:17:59编辑过]

 楼主| 发表于 2007-10-19 10:30 | 显示全部楼层

QUOTE:
以下是引用hxqzccct在2007-10-19 8:49:30的发言:

喵喵   两点多了还在线忙啊 

    厉害  

[em17][em17][em17]

没办法,我是“问题”少女啊[em04][em04][em04]
回复

使用道具 举报

发表于 2007-10-19 08:49 | 显示全部楼层

喵喵   两点多了还在线忙啊 

    厉害  

[em17][em17][em17]
回复

使用道具 举报

 楼主| 发表于 2007-10-19 23:50 | 显示全部楼层

文件打开会自动关闭的话,就禁用一下宏,开了后再启动宏试试,或者关了其他文档再开,或者重启电脑后再开,我也不知道啥原因,估计是定时器的bug?
回复

使用道具 举报

 楼主| 发表于 2007-10-20 00:01 | 显示全部楼层

发一个效果图,MsgBox和A1:D7填充颜色的改变,都是由A11单元格填充颜色改变所触发的。

[此贴子已经被作者于2007-10-21 1:52:21编辑过]
回复

使用道具 举报

发表于 2007-10-21 01:59 | 显示全部楼层

代码放在sheet里,sheet画一个 CommandButton1

这是原始代码,可以根据需要改编

 



回复

使用道具 举报

发表于 2007-10-21 00:44 | 显示全部楼层

太复杂了 没有细看 ,但以下代码也能实现 颜色改变事件

Private Sub CommandButton1_Click()
    Dim s As String, s1 As String
    Dim RG As Range, Tr As Boolean
    If CommandButton1.Caption <> "停止" Then
        CommandButton1.Caption = "停止"
    Else
        CommandButton1.Caption = "开始"
    End If

    Do While CommandButton1.Caption = "停止"
        a = ActiveCell.Interior.ColorIndex
        s = ActiveCell.Address
        Set RG = ActiveCell        
        Do While a = RG.Interior.ColorIndex
            DoEvents
            s1 = ActiveCell.Address
            If s1 <> s Or CommandButton1.Caption = "开始" Then
                Tr = True
                Exit Do
            End If
        Loop
        If Tr = False Then MsgBox s & "变色了"
        Tr = False
        s = ActiveCell.Address
    Loop
End Sub

[此贴子已经被作者于2007-10-21 1:06:05编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-10-21 01:34 | 显示全部楼层

QUOTE:
以下是引用ldy在2007-10-21 0:44:07的发言:

太复杂了 没有细看 ,但以下代码也能实现 颜色改变事件

能解释一下吗?我试不出效果来啊?[em04]是怎样实现单元格颜色改变而触发的事件的(模拟worksheet_change事件)?

[此贴子已经被作者于2007-10-21 1:37:54编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-10-21 08:37 | 显示全部楼层

晕,我开始结束给搞反了[em06][em06][em04][em04],真是好办法,学习了[em23][em23][em23][em24][em24][em24]

[此贴子已经被作者于2007-10-21 10:55:55编辑过]
回复

使用道具 举报

 楼主| 发表于 2007-10-21 10:58 | 显示全部楼层

用LDY版版的办法,好像不用按钮也行得通,原来循环语句可以这样用啊,再学习!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-1 06:03 , Processed in 0.298586 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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