접두사가있는 고유 ID를 생성하려고합니다. 그래서 이것은 0000에서 9999 사이의 난수를 생성하고 그것을 내 접두사 끝에 추가합니다. 내가 원하는 것은 A 열의 시트를 확인하여 해당 ID가 이미 존재하는지 확인하고 그렇다면 다른 난수를 생성하고 고유 한 번호를 찾을 때까지 계속됩니다. 이를 위해 while 루프를 사용하고 있습니다. 아래는 내 코드입니다. 내가 가진 문제는 match () 함수가 아무것도 찾지 못하면 값이 마지막 값으로 남아 있다는 것입니다. 즉, 마지막 값을 찾은 행 번호입니다. 예를 들어 내 ID가 T26-7055 인 경우 시트를 검색하여 59 행에 이미 존재 함을 찾습니다. 그런 다음 이번에는 존재하지 않는 T26 -2099와 같은 다른 ID를 생성하지만 일치 함수는 여전히 59를 반환하고 그 동안 루프는 무한 루프로 이동합니다.
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
루프의 시작 부분에 있으면 재설정되지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다