VBA中的范围select错误

我在ThisWorkBook下编写了一个VBA代码,以便在打开Excel文件时代码将自动运行。 代码使用xlDownselectdynamic范围,然后根据select将名称添加到工作簿。 检查下面的代码:

 Private Sub Workbook_Open() Sheets("sheet1").Range("E2", Sheets("sheet1").Range("E2").End(xlDown)).Select ActiveWorkbook.Names.Add Name:="DateList", RefersTo:=Selection End Sub 

我很确定我写的是正确的,但是我得到这样的错误信息:

运行时错误“1004”:范围类的select方法失败

此错误消息突出显示第二行:

 Sheets("sheet1").Range("E2", Sheets("sheet1").Range("E2").End(xlDown)).Select 

而当我使用相同的select方法来清除相同的范围,它没有像下面的错误工作:

 Sheets("sheet1").Range("E2", Sheets("sheet1").Range("E2").End(xlDown)).Clear 

除非你不需要下面的数据 – 我会用xlUp来代替,以防止在E2中只有一个值时发生错误:

 With Sheets("sheet1") ActiveWorkbook.Names.Add "DateList", .Range(.Cells(2, 5), .Cells(.Rows.Count, 5).End(xlUp)) End With 

用这个:

 With Sheets("sheet1") ActiveWorkbook.Names.Add "DateList", .Range("E2:E" & .[E:E].Find("*", , , , , xlPrevious).Row) End With