-->

UDF使用FindNext中似乎没有警告中止(UDF using FindNext seems to

2019-10-22 02:08发布

我有以下用户定义的函数,它试图找到的范围内的第n个非空单元格:

Option Explicit

Function finn_prioritert_oppgave(nummer As Long) As String

  Dim i As Long, r As Range, c As Range

  Set r = Range(PDCA.Range("L9"), PDCA.Range("L1048576").End(xlUp))
  i = 1

  Set c = r.Find(What:="*", LookIn:=xlValues, LookAt:=xlWhole)

  While (Not c Is Nothing) And (Intersect(c, PDCA.Rows(9)) Is Nothing) And (i < nummer)

    Debug.Print c
    Set c = r.FindNext(c)
    Debug.Print c
    Debug.Print CBool(c Is Nothing)
    i = i + 1

  Wend

  If c Is Nothing Then
    finn_prioritert_oppgave = "#N/A"
  Else
    finn_prioritert_oppgave = c.Offset(0, -10).Value
  End If

End Function

1运行它作为参数做工精细,大概是因为它不进入While -loop并击中了FindNext ,但任何较大的值作为参数运行它会导致它从显示一个叫做细胞#VALUE! -警报。

看什么会显示在我的眼前窗口也真是奇怪,因为这两个Debug.Print做后的消息FindNext不打印,虽然我没有得到任何警告。

输出我在立即窗口得到的,与2调用的参数是UDF是一个简单的X:


的区域中的函数是从看起来像称为本 (第一行是UDF调用用1作为参数,第二个是将其与2调用作为参数),而含有数据的区域看起来像这样 。

那么是什么我不知道的是,为什么不FindNext无法找到该范围内的第二个非空单元格,为什么功能没有任何警告中止?

Answer 1:

FindNext不UDF的工作。 你要简单地重复原来的Find操作。



文章来源: UDF using FindNext seems to abort without warning