发生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