如何在单张上引用单元格而不激活它?

所以我正在对一组数字文件进行审计,但是我认为我写的方式非常复杂,所以也许有人可以帮我…

我不明白为什么activesheet.cells工作正常,但是当我尝试引用工作簿(“主列表”)单元格工作表(“主发货”)单元格,它给了我一个错误。 我已经尝试了完整的文件位置,我已经尝试了与工作表。单元格,我已经试过与sheets.cells,我已经尝试使工作表variables,我不能让它工作。

它在我命名variables的顶部工作,但是它不起作用,因为我不想在每个循环中激活工作表10次。

Application.ScreenUpdating = False LR = Cells(Rows.Count, 2).End(xlUp).Row Dim AuditSheet As Worksheet, Mastersheet As Worksheet Set AuditSheet = ThisWorkbook.Sheets("Audit") Set Mastersheet = ThisWorkbook.Sheets("Master Shipped") For r = 3 To LR FpathBOL = "U:\Warehouse Associate\Shipped Orders 2016\Bill of Lading\" fnamebol = Mastersheet.Cells(r, 21).Text FNamePOD = Left(Mastersheet.Cells(r, 21).Text, (Len(Mastersheet.Cells(r, 21)) - 8)) FpathFile = "V:\LVA Files\" & Mastersheet.Cells(r, 4).Value & "\Line " & Mastersheet.Cells(r, 10).Value & "\" FnameFile = Mastersheet.Cells(r, 4).Value & "-" BOL = FpathBOL & "\" & fnamebol & ".pdf" POD = FpathBOL & FNamePOD & "POD.pdf" File1 = FpathFile & FnameFile & "PO.pdf" File2 = FpathFile & FnameFile & "EIC PO.pdf" File3 = FpathFile & FnameFile & "EDI 855.pdf" File4 = FpathFile & FnameFile & "EDI 870.pdf" File5 = FpathFile & FnameFile & "VENDOR INVOICE.pdf" File6 = FpathFile & FnameFile & "EIC INVOICE.pdf" File7 = FpathFile & FnameFile & "PCGR.pdf" File8 = FpathFile & FnameFile & "PL.pdf" File9 = FpathFile & FnameFile & "EDI.pdf" If Dir(File1) = "" Then Workbooks("Master List.xlsm").Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File1 End If If Dir(File2) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File2 End If If Dir(File3) = "" And Dir(File9) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File3 End If If Dir(File4) = "" And Dir(File9) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File4 End If If Dir(File5) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File5 End If If Dir(File6) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File6 End If If Dir(File7) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File7 End If If Dir(File8) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File8 End If If Dir(BOL) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = FnameFile & BOL End If If Dir(POD) = "" Then Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = FnameFile & POD End If Next r Application.ScreenUpdating = True End Sub 

采取您现有的代码片段:

 If Dir(File1) = "" Then Workbooks("Master List.xlsm").Worksheets("Audit").Activate ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Activate ActiveCell.Value = File1 End If 

作为一个经验法则,您可以删除尾随的.Activate和领先的ActiveSheet / ActiveCell语句,并合并行:

 If Dir(File1) = "" Then Workbooks("Master List.xlsm").Worksheets("Audit").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = File1 End If 

但是,这只是一个经验法则。 注意例如使用Rows.Count 。 这是相对于活动工作表,所以没有进一步的编辑将无法正常工作。

 If Dir(File1) = "" Then With Workbooks("Master List.xlsm").Worksheets("Audit") .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = File1 End With End If