Excel精英培训网

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

[已解决]求大神关注:在一个工作表中,多个单元格事件,多条件的问题!

[复制链接]
发表于 2014-10-22 16:50 | 显示全部楼层 |阅读模式
本帖最后由 liwenhong 于 2014-10-27 10:19 编辑

想要达到的效果:
    对于E2和E3单元格来说,只要其中一个为空或为“0”或为“请选择”时,在E10中就不会出现“成功1”。     对于M2和M3单元格来说,只要其中一个为空或为“0”或为“请选择”时,在M10中就不会出现“成功2”。
附件: 两个同时变化时只执行2.rar (10.02 KB, 下载次数: 2)

两个同时变化时只执行.rar

7.53 KB, 下载次数: 12

发表于 2014-10-22 16:54 | 显示全部楼层
E10=IF(COUNTA(E2:E3,M2:M3)=4,"成功1","")
M10=IF(COUNTA(E2:E3,M2:M3)=4,"成功2","")
回复

使用道具 举报

发表于 2014-10-22 16:59 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$E$3" And Target.Address = "$E$2" And Target.Address = "$m$3" And Target.Address = "$m$2" Then
        Range("E10") = "成功1"
        Range("M10") = "成功2"
     End If
   
End Sub
回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:02 | 显示全部楼层
baksy 发表于 2014-10-22 16:54
E10=IF(COUNTA(E2:E3,M2:M3)=4,"成功1","")
M10=IF(COUNTA(E2:E3,M2:M3)=4,"成功2","")

        我需要的是代码的方法。这只是一个问题的模型,实际的问题中,出现“成功1”或“成功2”是分别要执行两个过程。麻烦再给看看!非常感谢关注!
回复

使用道具 举报

 楼主| 发表于 2014-10-23 08:24 | 显示全部楼层
qh8600 发表于 2014-10-22 20:29
太复杂了,能不能简单,清晰的描述啊

又一种对想要效果的描述:比如我们先动E2和E3单元格,当E2和E3中都有内容时,在E10中出现“成功1”。此时,保持E2和E3中有内容不变,再动M2、M3单元格,当M2和M3中都有内容时,在M10中出现“成功2”。(现有代码的效果是:再动M2、M3单元格,当M2或M3中任意一个单元格中有内容时,在M10中就出现“成功2”。)

再比如我们先动M2和M3单元格,当M2和M3中都有内容时,在M10中出现“成功1”。此时,保持M2和M3中有内容不变,再动E2、E3单元格,当E2和E3中都有内容时,在E10中出现“成功2”。
回复

使用道具 举报

发表于 2014-10-23 08:50 | 显示全部楼层    本楼为最佳答案   
liwenhong 发表于 2014-10-23 08:24
又一种对想要效果的描述:比如我们先动E2和E3单元格,当E2和E3中都有内容时,在E10中出现“成功1”。此时 ...
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If (Target.Row = 2 Or Target.Row = 3) And Target.Column = 5 Then
  3.         If Cells(2, 5) <> "" And Cells(3, 5) <> "" Then
  4.             Cells(10, 5) = "成功1"
  5.         End If
  6.     End If
  7.     If (Target.Row = 2 Or Target.Row = 3) And Target.Column = 13 Then
  8.         If Cells(2, 13) <> "" And Cells(3, 13) <> "" Then
  9.             Cells(10, 13) = "成功2"
  10.         End If
  11.     End If
  12. End Sub
复制代码
楼主试试,是不是这样

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-10-24 10:35 | 显示全部楼层
qh8600 发表于 2014-10-23 08:50
楼主试试,是不是这样

       经试验,您的代码完全满足题目的要求,非常感谢您!但是,在我实际运用时,我的要求是:E2、E2、M2、M3单元格中不仅仅是空时不能运行,而是这些单元格中是“0”或“请选择”时都不运行。为此,我在您的代码上做了修改,但没有想象的简单,没有达到要求。麻烦您再给看看,代码该怎样修改?
    对新要求的描述:
    对于E2和E3单元格来说,只要其中一个中为空或为“0”或为“请选择”时,在E10中就不会出现“成功1”。     对于M2和M3单元格来说,只要其中一个中为空或为“0”或为“请选择”时,在M10中就不会出现“成功2”。
新附件: 两个同时变化时只执行2.rar (10.02 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2014-10-24 16:11 | 显示全部楼层
这是一个在一个工作表中多个单元格事件,请关注!
回复

使用道具 举报

 楼主| 发表于 2014-10-25 09:20 | 显示全部楼层
qh8600 发表于 2014-10-23 08:50
楼主试试,是不是这样

其实您的代码已经解决了E2、E3、M2、M3为空时的问题,我的新问题是增加了为“0”和为“请选择”,请您一定再看看!
回复

使用道具 举报

发表于 2014-10-25 09:51 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If InStr("$E$2|$E$3|$M$2|$M$3|", Target.Address) < 1 Then Exit Sub
   
    If InStr([e2] & [e3], "请选择") + InStr([e2] & [e3], "0") - (Len([e2]) = 0) - (Len([e3]) = 0) Then
       MsgBox "条件1满足"
    End If
   
    If InStr([m2] & [m3], "请选择") + InStr([m2] & [m3], "0") - (Len([m2]) = 0) - (Len([m3]) = 0) Then
       MsgBox "条件2满足"
    End If

End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 09:08 , Processed in 0.304261 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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