2016-09-21 8 views
1

私はデジタルファイルのセットで監査を実行していますが、私が書いた方法はかなり複雑なので多分誰かが私を助けることができると思います...シート上のセルをアクティブ化せずに参照するにはどうすればよいですか?

私が理解できないのはなぜactivesheet.cells問題なく動作していますが、ワークブック(「Master List」)ワークシート(「Master Shipped」)のセルを参照しようとすると、エラーが表示されます。私は完全なファイルの場所で試してみました、私はworksheets.cellsで試してみました、私はsheets.cellsで試してみました、私は変数をワークシートにしようとしました、と私はそれを働かせることができません。

変数の名前はどこにあるのですか?if文では機能しません。なぜなら、それぞれ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 
+0

読む、学び、そして愛:[ '.Select' /' .Activate'を使用しないようにする方法](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select -in-excel-vba-macros)である。 :D – BruceWayne

+0

構文は 'Workbooks(" Master List.xlsm ")です。シート(" Audit ")。セル' A1'を変更するセル(1,1) '。あなたは 'Workbooks(" Master List.xlsm ")を使うこともできます。シート(" Audit ")Range(" A1 ")' – user1274820

答えて

1

既存のコードスニペット取るために:経験則として

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 
+0

ughはとてもシンプルでした。どうもありがとうございました! – Victoria

+0

うれしい私は助けることができます。しかし私の追加/編集を見てください – ThunderFrame

関連する問題