数组中的值无法更新 VBA Excel

担乐 |

我正在尝试将范围的第 n 个相似度与文本进行比较。Similarity函数是返回 2 个文本之间的百分比相似度。

Function SimilarText(ByVal CompareText As String, _
                    ByRef TargetCompare As Range, _
                    Optional ByVal RankSimilarity As Integer = 1) As Long

Dim compareResults() As Long
ReDim compareResults(RankSimilarity)
Dim simiResult As Single
Dim smallestIndex As Integer
Dim result As String
Debug.Print (CompareText)

For Each cell In TargetCompare
    simiResult = Similarity(cell.Value, CompareText)
    Debug.Print (simiResult)
    If simiResult > Application.Min(compareResults) Then
        smallestIndex = Application.Match(Application.Min(compareResults), compareResults, 0) - 1
        Debug.Print ("Index:" & smallestIndex)
        compareResults(smallestIndex) = CLng(simiResult)'//This doesnt seem to do anything. I tried without the conversion but still nothing.
        Debug.Print ("Smallest after update:" & compareResults(smallestIndex)) '//This always 0
    End If
Next cell

    SimilarText = Application.Min(compareResults) '//So this is also alway 0

End Function

我希望数组元素会在每个单元格之后更新,如 '(0.22,0.44) 但结果似乎总是 0。

Foxfire和烧伤和烧伤

您的数组 compareResults() 被定义为Long,这仅适用于整数。

长数据类型 (Visual Basic)

将数据类型更改为允许十进制的内容。

此外,在 line 中compareResults(smallestIndex) = CLng(simiResult),您正在强制一个数字成为一个长整数。使用其他东西,否则会保存一个长整数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章