设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2691|回复: 8
打印 上一主题 下一主题

很简单的一个循环想不明白

[复制链接]
跳转到指定楼层
1#
发表于 2005-8-5 02:49:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的代码,本意是查找成功退出过程,查找不成功则x+1,可是发现不管查找成功与否x总是等于20,总是会激发msgbox(x),为什么?

dim x as integer

x = 0

For i = 1 To 20

        If Worksheets(2).Cells(i, 1) = Target Then

            Worksheets(2).Cells(i, 2).Copy

            Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial

            Exit Sub

        Else

        x = x + 1

           If x = 20 Then

            MsgBox (x)

            Exit Sub

            End If

      

        End If

        Next i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-8-5 03:21:00 | 只看该作者
退出循环用exit for退出过程用end sub
3#
发表于 2005-8-5 07:52:00 | 只看该作者
删除 X=X+1 行
4#
发表于 2005-8-5 08:01:00 | 只看该作者
呵呵,不好意思,把X当成I了,收回楼上发言。不过问题不应该在Exit语句(我们很多时候都是在循环中退出过程的),估计是你的Target变量的问题(也就是说事实上你的运行结果一直都没有找到过,检测的办法是在下面一句:Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial

加上一句:msgbox "找到了"  (或者 MsgBox (x)  )看这句是不是执行,如果执行,应该不会继续后面的语句
5#
 楼主| 发表于 2005-8-5 16:24:00 | 只看该作者
应该是不关exit的事.

至于Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial也是执行了的,因为可以直接看到结果,在后面加上msgbox(x)也可以看到是执行了



现在结果是不管输入什么,第一个if循环里的if和else同时执行,不明白问题出在哪
6#
 楼主| 发表于 2005-8-5 16:39:00 | 只看该作者
呵呵,找到问题了,不好意思是我大意了

原来代码是这样的,调试时把if traget.column =1 then这句屏蔽了忘了加上来,发帖时为了方便又没把前面2个if贴出来,汗!

谢谢2位热心的斑竹

原来完整代码:

x = 0

If Target.Column = 1 Then

    If Target.Count = 1 Then

        If Target <> "" Then

        

        For i = 1 To 20

        If Worksheets("报表一资料").Cells(i, 1) = Target Then

        Worksheets("报表一资料").Cells(i, 2).Copy

        Worksheets("报表一").Cells(Target.Row, Target.Column + 1).PasteSpecial

        'x = x - 1

        'MsgBox (x)

        Exit For

        Exit Sub

        Else

        x = x + 1

            If x = 20 Then

            MsgBox ("Can Not Find '" & x & "'")

            Exit Sub

            End If

      

        End If

        Next i

        End If

    End If

End If



还有个问题想问一下,在里,无论是手动输入或是粘贴导致的改变动会引发worksheet_change(),可是点住单元格右下角拉,这样复制的变动不会引发worksheet_change(),有什么办法让这种变动也会引发worksheet_change()呢?

[此贴子已经被作者于2005-8-5 8:44:44编辑过]

7#
发表于 2005-8-12 07:44:00 | 只看该作者
我倒……
8#
 楼主| 发表于 2005-8-12 16:53:00 | 只看该作者
[em04][em04][em04]
9#
发表于 2005-8-13 23:35:00 | 只看该作者
[em01][em02][em03][em04][em05]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-15 03:55 , Processed in 0.088290 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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