Excel字符串函数不返回值

时间:2014-05-30 10:44:40

标签: string excel function vba

我很难理解代码中的错误。 该函数未返回任何值。当我要求调试器停在最后一行& Verif_toutes_erreurs =结果,它不会停止。 我不明白为什么,是吗?

Function Verif_Toutes_Erreurs() As String
Dim RESULT As String
Dim CELLULE As Range
Dim LISTE As String
Dim TEMP As String
Dim i As Integer

i = 0

For Each CELLULE In SheetCoutRH.Range("Table_CoutRH").SpecialCells(xlCellTypeFormulas, xlErrors)
TEMP = SheetCoutRH.Cells(CELLULE.Row, SheetCoutRH.Range("Table_CoutRH").Column)
    If InStr(1, LISTE, TEMP) = 0 And i < 10 Then
    LISTE = LISTE & TEMP & ";"
    RESULT = RESULT & "La ligne " & TEMP & " contient une erreur." & vbCrLf
    i = i + 1
    End If
    If i > 9 Then Exit For
Next

For Each CELLULE In SheetIngredients.Range("Table_ing").SpecialCells(xlCellTypeFormulas, xlErrors)
TEMP = SheetIngredients.Cells(CELLULE.Row, SheetIngredients.Range("Table_ing").Column)
    If InStr(1, LISTE, TEMP) = 0 And i < 10 Then
    LISTE = LISTE & TEMP & ";"
    RESULT = RESULT & "La ligne " & TEMP & " contient une erreur." & vbCrLf
    i = i + 1
    End If
    If i > 9 Then Exit For
Next

For Each CELLULE In SheetRecettes.Range("Table_ing").SpecialCells(xlCellTypeFormulas, xlErrors)
TEMP = SheetRecettes.Cells(CELLULE.Row, SheetRecettes.Range("Table_recettes[Recette]").Column)
    If InStr(1, LISTE, TEMP) = 0 And i < 10 Then
    LISTE = LISTE & TEMP & ";"
    RESULT = RESULT & "La ligne " & TEMP & " contient une erreur." & vbCrLf
    i = i + 1
    End If
    If i > 9 Then Exit For
Next

Verif_Toutes_Erreurs = RESULT

End Function

比你的帮助更多!

2 个答案:

答案 0 :(得分:0)

通常在执行流程未达到时,“避免”断点。 : - )

如果您的函数因错误而过早退出(例如,无效的工作表),则永远不会到达最后一行。如果在函数调用之前从另一个包含On Error Resume Next的许可错误处理的子/函数调用该函数,则运行时将忽略该错误,并且该函数将“行动”,就像它没有返回任何东西。

答案 1 :(得分:0)

您的函数没有参数。

如果函数出现在工作表单元格中,则缺少参数将禁止调用它。最简单的解决方法是包括:

Application.Volatile

作为函数的第二行。