2017-02-03 8 views
0

VBA自動入力機能(コードブロックの最後)を動作させようとしていますが、コードを実行するたびにエラーが発生しています。 「Rangeクラスの自動入力メソッドが失敗しました」というメッセージが表示されます。誰かがここで私を助けることができますか?検索したGoogleは何も動作しません。おそらく小さなものを見下ろすでしょう。助けを前にありがとう。Excelの自動入力エラーVBAコード

Sub UpdateLAB() '---> still need to work on this 

'author: css 

Dim SalesBook As Workbook 
Dim ws2 As Worksheet 
Dim wspath As String 
Dim n As Integer 
Dim FirstRow As Long 
Dim LastRow As Long 
Dim LastRow2 As Long 
Dim sourceCol As Integer 
Dim RefCellValue2 As String 
Dim ps As String 
Dim Platts As Workbook 


Application.Calculation = xlCalculationAutomatic 

Set SalesBook = Workbooks("ALamb.xlsm") 
Set ws2 = SalesBook.Worksheets("US LAB Price") 
wspath = "C:\Users\scullycs\Desktop\P&O\Platts Data\Platts 2016.xlsm" 

FirstRow = ws2.Range("B4").Row 
LastRow = ws2.Range("B4").End(xlDown).Row + 1 
LastRow2 = ws2.Range("c4").End(xlDown).Row 
sourceCol = 2 'refers to the column your data is in 

    For n = FirstRow To LastRow 
    RefCellValue2 = Cells(n, sourceCol).Value 

     If IsEmpty(RefCellValue2) Or RefCellValue2 = "" Then 
     Cells(n, sourceCol).Offset(0, -1).Copy 
     SalesBook.Worksheets("Control Page").Range("C8").PasteSpecial  (xlPasteValues) 

     Else 

    End If 

Next n 

     ps = SalesBook.Worksheets("Control Page").Range("C9").Text 
     Set Platts = Workbooks.Open(wspath) 
     Platts.Worksheets(ps).Activate 
     Range("A13").End(xlDown).Select 
     Selection.Offset(0, 11).Select 

    If Selection.Value = "" Then 
     MsgBox ("Platts data does not exist") 
     Platts.Close 

     Else 
     Selection.Copy 
     Set SalesBook = Workbooks("ALamb.xlsm") 
     SalesBook.Worksheets("US LAB Price").Range("b1").End(xlDown).Offset(1, 0).PasteSpecial (xlPasteValues) 
'this is where I get the error 
     SalesBook.Worksheets("US LAB Price").Range("c4").AutoFill Destination:=Range("C4:C" & LastRow2), Type:=xlFillDefault 

     Platts.Close 

    End If 

End Sub 

答えて

1

おそらく範囲が重複していないか、範囲が大きすぎます。参照したい場合は、link

  1. LastRow2の値を確認してください。
  2. ラッピングオーバーにするために、塗りつぶし範囲が同じシートであることを確認してください。これを行うには、ステートメントを簡単なステップに分割します。後で組み合わせることができます。

は、フィードバックのための

Set SourceRange = SalesBook.Worksheets("US LAB Price").Range("C4:C4") 
Set fillRange = SalesBook.Worksheets("US LAB Price").Range("C4:C" & LastRow2) 
SourceRange.AutoFill Destination:=fillRange, Type:=xlFillDefault 
+0

おかげに声明を打破することをお勧めしますが、これは今完璧に動作します。 –