Excel精英培训网

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

[已解决]求一个判断的写法

[复制链接]
发表于 2014-4-30 10:33 | 显示全部楼层 |阅读模式
本帖最后由 跑跑2014 于 2014-4-30 18:30 编辑

我怎样用代码表示出来,如果D列发现有小计,就退出,没有继续执行下面操作。
if    then
哪位高手告诉我怎样表示出D列怎样表示发现小计呢。
最佳答案
2014-4-30 11:16
Sub test()
    If Not Range("d:d").Find("小计") Is Nothing Then Exit Sub '如果看到小计,就退出
   
    Application.DisplayAlerts = False
    With Sheet110
        .Columns("H:Y").Subtotal GroupBy:=18, Function:=xlSum, TotalList:=Array(1, 4, 7, 16, 17), _
                                 Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    End With
End Sub
1236.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-30 10:46 | 显示全部楼层
If Range("d:d").Find("小计") Is Nothing Then
    'D列无小计。
Else
    'D列有小计。
End If
回复

使用道具 举报

 楼主| 发表于 2014-4-30 11:03 | 显示全部楼层
本帖最后由 跑跑2014 于 2014-4-30 11:04 编辑
爱疯 发表于 2014-4-30 10:46
If Range("d:d").Find("小计") Is Nothing Then
    'D列无小计。
Else


If Range("d:d").Find("小计") Is Nothing Then
   
   
    Exit Sub
Else
   

Application.DisplayAlerts = False

With Sheet110
.Columns("H:Y").Subtotal GroupBy:=18, Function:=xlSum, TotalList:=Array(1, 4, 7, _
        16, 17), Replace:=True, PageBreaks:=False, SummaryBelowData:=True

end if
我是想如果看到带小计了,就退出程序,如果没有,就执行带小计代码,这样写后,D列没有带小计,不执行代码呢。
回复

使用道具 举报

发表于 2014-4-30 11:16 | 显示全部楼层    本楼为最佳答案   
Sub test()
    If Not Range("d:d").Find("小计") Is Nothing Then Exit Sub '如果看到小计,就退出
   
    Application.DisplayAlerts = False
    With Sheet110
        .Columns("H:Y").Subtotal GroupBy:=18, Function:=xlSum, TotalList:=Array(1, 4, 7, 16, 17), _
                                 Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    End With
End Sub
回复

使用道具 举报

 楼主| 发表于 2014-4-30 18:29 | 显示全部楼层
爱疯 发表于 2014-4-30 11:16
Sub test()
    If Not Range("d:d").Find("小计") Is Nothing Then Exit Sub '如果看到小计,就退出
    ...

非常感谢,总看到类似的这样的语句,您能受累讲下,这句话的意思吗,再次感谢……。……
Not Range("d:d").Find("小计") Is Nothing
回复

使用道具 举报

发表于 2014-4-30 19:58 | 显示全部楼层
Range("d:d")
表示D列


Range("d:d").Find("小计")
表示在D列之中查找,看有没有单元格含有"小计"。


Range("d:d").Find("小计") Is Nothing
is nothing表示不引用对象。即(在D列之中查找,看有没有单元格含有"小计")对象不存在。


Not Range("d:d").Find("小计") Is Nothing
因为多用了一个NOT,就是相反含义了,即对象存在


If Not Range("d:d").Find("小计") Is Nothing Then
放到IF语句的条件位置,解释就是:
如果 在D列找到含有"小计"的单元格,那么 ....
回复

使用道具 举报

 楼主| 发表于 2014-4-30 20:11 | 显示全部楼层
爱疯 发表于 2014-4-30 19:58
Range("d:d")
表示D列

太感谢了,is nothing表示不引用对象这句我知识太浅现在 还是不能接受。不知道学到哪这句我会能接受了。
回复

使用道具 举报

发表于 2014-4-30 20:46 | 显示全部楼层
在处理对象问题时, 我自己的理解是:

nothing关键字,表示没有、不存在的意思。
is 运算符,类似算术运算,也属于一种运算,用来判断 is 两边的对象,结果返回的是一个布尔值。

1)当nothing 用于if语句条件时,通常是看 对象是否存在
2)当nothing 用于set语句里,通常是设置 要不要引用对象



比起我这解释,我觉得更要的是
1)先学会查看VBA的帮助
2)自己去查解释,比如nothing是什么意思,都是怎么用的?is是什么运算,怎么用的?...
回复

使用道具 举报

 楼主| 发表于 2014-4-30 20:59 | 显示全部楼层
爱疯 发表于 2014-4-30 20:46
在处理对象问题时, 我自己的理解是:

nothing关键字,表示没有、不存在的意思。

嗯,好的。谢谢你。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 11:51 , Processed in 5.044122 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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