Vba 不同PC的不同结果:运行时错误91对象变量或未设置块
我在两台不同的PC上运行下面的代码,同时得到两个不同的结果:一个运行正常,另一个提醒“运行时错误91对象变量或未设置块”。有人能帮我吗Vba 不同PC的不同结果:运行时错误91对象变量或未设置块,vba,excel,Vba,Excel,我在两台不同的PC上运行下面的代码,同时得到两个不同的结果:一个运行正常,另一个提醒“运行时错误91对象变量或未设置块”。有人能帮我吗 Function FindArchiveFile() As String FindArchiveFile = Application.Intersect(Worksheets("Filelist").UsedRange, _ Worksheets("Filelist").Range("B:B")).Find( _ CDate(Workshee
Function FindArchiveFile() As String
FindArchiveFile = Application.Intersect(Worksheets("Filelist").UsedRange, _
Worksheets("Filelist").Range("B:B")).Find( _
CDate(WorksheetFunction.Large(Worksheets("Filelist").Range("B:B"), 2))).Offset(0, -1).Value
Worksheets("Setting").Range("LastDate").Value = _
Application.Intersect(Worksheets("Filelist").UsedRange, _
Worksheets("Filelist").Range("B:B")).Find( _
CDate(WorksheetFunction.Large(Worksheets("Filelist").Range("B:B"), 2))).Value
End Function
我已经修改了你的函数,使它更易读。这应该有一些注意事项 如果从工作表调用此函数,它不太可能工作
- 这是因为workhseet函数通常只能向调用单元格返回值。否则,它无法操作工作表对象。此函数试图在命名范围
中设置一个值,这可能会失败。它可能会在这一行无声地失败,并且仍然会将值返回给调用单元“LastDate”
- 从工作表调用此函数时,可能会引发循环引用错误
Sub Test()
'Use this to test the function
MsgBox FindArchiveFile
Worksheets("Setting").Range("LastDate").Value = FindArchiveFile
End Sub
Function FindArchiveFile() As String
Dim ws As Worksheet
Dim rngB As Range
Dim rngInt As Range
Dim foundVal As String
Set ws = Worksheets("Filelist")
Set rngB = ws.Range("B:B")
Set rngInt = Application.Intersect(ws.UsedRange, rngB)
foundVal = rngInt.Find( _
CDate(WorksheetFunction.Large(rngB, 2))).Offset(0, -1).Value
'## I comment the next line out and put it in the calling subroutine, since
' the function returns a value, use the function properly.
'Worksheets("Setting").Range("LastDate").Value = foundVal
FindArchiveFile = IIf(foundVal = vbNullString, "Not Found", foundVal)
End Function
括号太多,放错地方了。请发布更多的代码。除了这种语法错误(根本不允许代码运行)之外,很难确定是什么导致了特定的错误。是什么让您认为是这一行代码引起了错误?我们确实需要了解更多。
函数FindArchiveFile()作为字符串FindArchiveFile=Application.Intersect(工作表(“文件列表”).UsedRange,工作表(“文件列表”).Range(“B:B”)).Find(CDate(工作表函数.Large(工作表(“文件列表”).Range(“B:B”),2)).Offset(0,-1)。值工作表(“设置”).Range(“LastDate”).Value=Application.Intersect(工作表(“文件列表”).UsedRange,工作表(“文件列表”).Range(“B:B”)).Find(CDate(工作表函数.Large(工作表(“文件列表”).Range(“B:B”),2))).Value-End函数
抱歉格式混乱。谁能帮我纠正一下吗?我不知道如何添加代码作为回复。我把你的代码放在了问题中。这是一个函数;您如何调用该函数?您是从另一个子例程/宏调用它,还是从单元格中的工作表调用它,如=FindArchiveFile()
?了解工作表上的数据外观也会有所帮助。将图像上载到并在此处发布链接。