设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[求助]哪位高手能帮小弟的代码“减负”?

[复制链接]
跳转到指定楼层
1#
发表于 2007-1-16 00:08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:

小弟写过的以下代码,请教能否有其他的替代方法:

目的:在数据表中某列查找 值等于变量PO_number的单元格,并返回该单元格的行数

        ......

         PO_number = .Cells(16, 2).Value
        
         If PO_number = "" Then Exit Sub

        Application.ScreenUpdating = False
        
            Workbooks("AAA").Sheets("BBB").Activate
            Workbooks("AAA").Sheets("BBB").Cells(3, 4).Select
            Workbooks("AAA").Sheets("BBB").Columns("D").Find(What:=PO_number, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate

        H1 = ActiveCell.Row
        
        .Activate
        
        Application.ScreenUpdating = True

       ......


由于该数据列中的数据是无序排列的,所以很多函数用不来,只能用记录宏的笨办法。很明显是运行速度是最慢的一种了,虽然速度对工作影响不大,但对此行代码我觉得很羞愧,请教高手有没有办法给它整一下容,小弟这里先谢过了!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-1-16 01:30:00 | 只看该作者
时间关系,我简单地整理了一下,也不知道是否合适你要求.

Sub X()
Dim C As Range
Dim FirstAddress
PO_number = Sheet1.Cells(16, 2).Value
If PO_number = "" Then Exit Sub

Application.ScreenUpdating = False
With Sheet1.Range("D")
    Set C = .Find(What:=PO_number, LookIn:=xlFormulas, SearchOrder:=xlByColumns, LookAt:=xlWhole)
    If Not C Is Nothing Then
        FirstAddress = C.Address
        Do
            MsgBox C.Address(0, 0) & "位置找到符合记录"
            Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Address <> FirstAddress
    End If
End With

Application.ScreenUpdating = True

End Sub
3#
 楼主| 发表于 2007-1-16 05:38:00 | 只看该作者
呵呵呵!谢谢了这位大侠,我试看看运行速度[em07]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-13 16:44 , Processed in 0.094547 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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