应用程序定义或对象定义的错误

时间:2012-10-10 19:49:54

标签: excel excel-vba excel-2007 excel-2010 vba

我正在尝试编写如下函数:

Function getEntityCode(fileName As String) As Range
Dim entitySheet As Worksheet
Dim c As Range
Dim i As Integer
Dim valid As Boolean
Dim finalRow As Integer
Dim finalCol As Integer

Set entitySheet = Workbooks("OHUploads.xlsm").Worksheets("EntityCodes")
finalRow = entitySheet.Cells(Application.Rows.Count, 1).End(xlUp).Row
On Error GoTo ErrHandler:
With entitySheet
   Set c = .Range(.Cells(1, 3), .Cells(1, finalCol))
End With
valid = False
ErrHandler:
Debug.Print Error(Err)
If valid = False Then
   Set getEntityCode = entitySheet.Range(entitySheet.Cells(1, 3), entitySheet.Cells(1, finalCol))
Else
   Set getEntityCode = c
End If
End Function

但无论怎么做,当语句执行时    设置c = .Range(。细胞(1,3),。细胞(i,finalCol)) 它总是在errHandler中结束,它总是显示:应用程序定义的错误或对象定义的错误

我以为我已经明确地定义了所有内容,看不出我做错了什么,请有人帮我这个,非常感谢你。

1 个答案:

答案 0 :(得分:2)

您永远不会为finalCol设置值,因此它默认为0。

调用Cells(1,0)会引发错误,因为Cells是基于1而不是基于0。或者更确切地说,行或列0不存在。

我建议使用以下行:finalCol = 1或只使用1。