gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:23:45 25 4
gpt4 key购买 nike

我正在尝试生成带有前缀的唯一 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com