VBA Excel “error 13: type mismatch”

后端 未结 2 394
失恋的感觉
失恋的感觉 2020-12-21 05:40

I used this code to create 100000 numbers (12 digit unique random numeric numbers )

Sub uniqueramdom()

Const strCharacters As String = \"0123456789\"

Dim c         


        
2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-21 06:23

    You were running into an old functional size limitation of application.transpose. If you move to a 2-D array and fill the proper rank, you should not require the use of transpose at all.

    Sub uniqueramdom()
    
        Const strCharacters As String = "0123456789"
    
        Dim cllAlphaNums As Collection
        Dim arrUnqAlphaNums(1 To 100000, 1 To 1) As String
        Dim varElement As Variant
        Dim strAlphaNum As String
        Dim AlphaNumIndex As Long
        Dim lUbound As Long
        Dim lNumChars As Long
        Dim i As Long
    
        Set cllAlphaNums = New Collection
        lUbound = UBound(arrUnqAlphaNums, 1)
        lNumChars = Len(strCharacters)
    
        On Error Resume Next
        Do
            strAlphaNum = vbNullString
            For i = 1 To 12
                strAlphaNum = strAlphaNum & Mid(strCharacters, Int(Rnd() * lNumChars) + 1, 1)
            Next i
            cllAlphaNums.Add strAlphaNum, strAlphaNum
        Loop While cllAlphaNums.Count < lUbound
        On Error GoTo 0
    
        For Each varElement In cllAlphaNums
            AlphaNumIndex = AlphaNumIndex + 1
            arrUnqAlphaNums(AlphaNumIndex, 1) = varElement
        Next varElement
    
        Range("A1").Resize(lUbound) = arrUnqAlphaNums
    
        Set cllAlphaNums = Nothing
        Erase arrUnqAlphaNums
    
    End Sub
    

提交回复
热议问题