Excel .找到最佳/最佳实践方法,从一个范围中读取多个项目

Excel .找到最佳/最佳实践方法,从一个范围中读取多个项目,excel,vba,Excel,Vba,我已经读到,从工作簿中来回执行的操作可能会非常密集。在可能的情况下,试着从工作表中读取您需要的内容,然后从工作表中执行您需要的操作。下面是我的代码摘录,我想知道是否有一种最佳实践方法来完成下面的工作,或者我所做的是不是应该这样做 CI = Sheets(OperatingCostsSheet).Range("B5:B8").Find(WHAT:=LOB, MatchCase:=False).Offset(0, 1) CC = Sheets(OperatingCostsSheet).Range("

我已经读到,从工作簿中来回执行的操作可能会非常密集。在可能的情况下,试着从工作表中读取您需要的内容,然后从工作表中执行您需要的操作。下面是我的代码摘录,我想知道是否有一种最佳实践方法来完成下面的工作,或者我所做的是不是应该这样做

CI = Sheets(OperatingCostsSheet).Range("B5:B8").Find(WHAT:=LOB, MatchCase:=False).Offset(0, 1)
CC = Sheets(OperatingCostsSheet).Range("B5:B8").Find(WHAT:=LOB, MatchCase:=False).Offset(0, 4)
OS = Sheets(OperatingCostsSheet).Range("B5:B8").Find(WHAT:=LOB, MatchCase:=False).Offset(0, 5)

谢谢。

我认为您甚至不会注意到4个单元格中的定位方法之间的差异,但您可能应该记录第一次查找的位置,并将其用于后续偏移分配。您当前基于.Find的代码在“不匹配/查找”上没有错误控制

dim i as variant
with Sheets(OperatingCostsSheet).Range("B5:B8")
    i = application.match(LOB, .cells, 0)  'same as .find with matchcase:=false; returns matching position within B5:B8; e.g. 1 to 4.
    if not iserror(i) then
        CI = .cells(i, 1).Offset(0, 1)
        CC = .cells(i, 1).Offset(0, 4)
        OS = .cells(i, 1).Offset(0, 5)
    end if
end with