我想用一個前綴生成一個唯一的ID。爲此,我生成一個介於0000和9999之間的隨機數字,並將其添加到我的前綴末尾。然後,我想要做的是檢查A列中的工作表,看看該ID是否已經存在,如果是,那麼它只是產生另一個隨機數,並繼續進行,直到找到唯一的一個。爲此,我正在使用while循環。以下是我的代碼。我遇到的問題是,一旦match()函數找不到任何值,該值將保留爲最後一個值,即:找到最後一個值的行號。例如,如果我的ID是T26-7055,它會搜索工作表並發現它已經存在於第59行中。然後它會生成另一個ID,這個時間稱爲T26 -2099,它不存在,但匹配函數仍然返回59,循環進入無限循環。我不明白爲什麼會發生這種情況,並希望你們中的一個人能夠提供幫助。Application.worksheetFunction.match無法正常工作VBA Excel
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
感謝
將Dim match與其他Dim語句一起移動。在每個循環的開始處將匹配重置爲0,所以就在'While'行之後加上'match = 0'。 我相信有一個創建唯一ID的更好方法。 –
此鏈接可能有所幫助:http://www.mrexcel.com/forum/excel-questions/647784-excel-2010-generate-6-digit-unique-random-number-id-column.html –