2017-11-29 16 views
1

以下のコードは、ブックを最初に開いたときに実行されるコードです。VBAコンパイルエラーが発生しました

Sub Auto_Open() 

Dim LastRow As Integer 
LastRow = Sheet6.UsedRange.Rows.Count 

ActiveWorkbook.RefreshAll 

Sheet6.AutoFill Destination:=Range("Y2:Y" & LastRow) 

End Sub 

それは自動的にブック内の任意のクエリまたは式を更新する更新すべてを実行した後、ワークシートに見出すことができるデータの最後の行にsheet6の列Y内のデータのリストを自動入力します。

コードを実行すると、「コンパイルエラー:データメンバーのメソッドが見つかりません」というハイライトが表示されます。

.Autofill 

私が理解していないことは、これだけでなく、同じスプレッドシートでもうまく機能するということです。

このシートでは動作しませんが、他のコードでは次のコードを試しました。

Sub Auto_Open() 

ActiveWorkbook.RefreshAll 

Sheet6.AutoFill_ListSource 

End Sub 

ListSourceは、私が自動入力しようとしている列Y内のテーブルの名前です。

ありがとうございました!

+0

:最後の行を取得するには、 "安全な" 方法で、Find機能を使用することになりますExcelヘルプを使用すると、自動入力にはシートではなく範囲が必要であることがわかりますこの範囲を含む必要があります)。 – SJR

答えて

3

変更:

Sheet6.AutoFill Destination:=Range("Y2:Y" & LastRow) 

へ:

Sheet6.Range("Y2").AutoFill Destination:=Sheet6.Range("Y2:Y" & LastRow) 

Dim LastCell As Range 
Dim LastRow As Long 

With Sheet6 
    Set LastCell = .Cells.Find(What:="*", After:=.Cells(1), Lookat:=xlPart, LookIn:=xlFormulas, _ 
         searchorder:=xlByRows, searchdirection:=xlPrevious, MatchCase:=False) 
    If Not LastCell Is Nothing Then 
     LastRow = LastCell.Row 
    Else 
     MsgBox "Error! worksheet is empty", vbCritical 
     Exit Sub 
    End If 
End With 
+1

'End'?...... 0_0 –

+0

@SiddharthRout私の古いコードから: –

+1

++長い時間前に[これを入れた](http://www.vbforums.com/showthread.php?511766) -Classic-VB-Why-using-the-End-statement-(または-BB-s-quot-stop-quot-button)-a-bad-idea)を組み合わせて使用​​します。面白い読書。ところで、ユーザーが単一列の最後の行を探している場合、 '.Find'は過剰なものになります。 'xlUp'はこの問題を解決します... [This](https://stackoverflow.com/questions/11169445/error-in-finding-last)の' Application.WorksheetFunction.CountA(.Cells) 'の使用もチェックしてください。 -used-cell-in-vba/11169920#11169920)。ちょうど私の2セント:) –

関連する問題