Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发生VBA编译错误_Vba_Excel - Fatal编程技术网

发生VBA编译错误

发生VBA编译错误,vba,excel,Vba,Excel,下面的代码是在首次打开工作簿时运行的 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列中的数据列表自动填充到工作表中可以找

下面的代码是在首次打开工作簿时运行的

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列中的表的名称。

更改:

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

注意:获取最后一行的“更安全”方法是使用
Find
功能:

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

使用Excel帮助,您将看到自动填充需要一个范围,而不是一张工作表(并且目标必须包括此范围)。++很久以前,我将所有内容放在一起。有趣的阅读。顺便说一句,如果用户正在查找单个列中的最后一行,那么
.Find
将是一个过分的操作
xlUp
将解决此问题。。。另请查看中的使用
应用程序.WorksheetFunction.CountA(.Cells)
。就我的2美分:)谢谢你的帮助-这真是一种享受!尽管如此,我仍然不明白为什么我的原始代码没有在这个电子表格上运行,而是在另一个…@DanM上运行,因为您没有用
Sheet6
限定
范围(“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