vba - Application.worksheetFunction.match 无法正常工作 VBA Excel

标签 vba function excel match

我正在尝试生成带有前缀的唯一 ID。为此,我生成了一个介于 0000 和 9999 之间的随机数,并将其添加到前缀的末尾。然后我想要做的是检查 A 列中的工作表以查看该 ID 是否已经存在,如果存在,那么它只会生成另一个随机数并继续运行,直到找到一个唯一的。为此,我使用了一个 while 循环。下面是我的代码。我遇到的问题是,一旦 match() 函数找不到任何内容,它的值就会保留为最后一个值,即:它找到最后一个值的行号。例如,如果我的 id 是 T26 - 7055,它会搜索工作表并发现它已经存在于第 59 行中。然后它这次生成另一个 ID,比如 T26 -2099,它不存在,但匹配函数仍然返回 59 和 while循环只是进入无限循环。我不明白为什么会发生这种情况,并希望你们中的一个人能够提供帮助。

    Dim newID As String
Dim x As Integer
Dim matchedRow As Boolean

matchedRow = True
x = CInt(Int(9999 * Rnd()) + 1)
newID = "T26 - " & x
While matchedRow = True
    Dim match As Long
    On Error Resume Next
        match = Application.WorksheetFunction.match(newID, Sheets("Exceptions").Columns(1), 0)
   On Error GoTo 0
    If match <> 0 Then
        x = CInt(Int(9999 * Rnd()) + 1)
        newID = "T26 - " & x
        matchedRow = True

    Else
        matchedRow = False
    End If
Wend

谢谢

最佳答案

您没有重置 match找到匹配项后为 0。

线后

matchedRow = True

放线
match = 0

Dim match as Long在循环开始时不会重置它。

关于vba - Application.worksheetFunction.match 无法正常工作 VBA Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270199/

相关文章:

vba - 显示用户窗体后将焦点设置回应用程序窗口

c++ - 如何将函数转换为 lambda 函数

Excel 自动填充字母和数字

c++ - 如何调用另一个类的函数?

python - Python 中的 Levenshtein 距离循环

VBA如何将整数传递给范围值

python - 什么定义了 Excel.Application COM 对象连接到哪个 Excel 实例?

excel - 分割字符串,但在所有分割中考虑 1 个分隔符

regex - 在 Excel 中使用正则表达式,我可以在替换匹配的字符串之前对匹配的模式执行一些算术运算吗?

excel - 清除组合框的选择