Office中国论坛/Access中国论坛

标题: [求助]哪位高手能帮小弟的代码“减负”? [打印本页]

作者: andy_zjhzd3m    时间: 2007-1-16 00:08
标题: [求助]哪位高手能帮小弟的代码“减负”?
各位大侠:

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

目的:在数据表中某列查找 值等于变量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

       ......


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




作者: cola    时间: 2007-1-16 01:30
时间关系,我简单地整理了一下,也不知道是否合适你要求.

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
作者: andy_zjhzd3m    时间: 2007-1-16 05:38
呵呵呵!谢谢了这位大侠,我试看看运行速度[em07]




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3