• Status: Solved
• Priority: Medium
• Security: Public
• Views: 291

# Access 2013 - Visual basic code

My OS is win 7 prof 64 bit and I use  Office 365, Access 2013.  I would like to know what is the syntax to rearrange a string of text :
Eg : a string like : 1234TqRi*(Ka
The string will consist of CAPS, small case, numbers and any key from the keyboard.
To be rearranged at random using vb code.
Thank u.
0
jegajothy
• 4
• 3
• 2
• +1
1 Solution

Commented:
you can put each letter in array and make loop for len of the string you want
that takes random number of the array index usin RND function
0

PresidentCommented:
There's nothing built-in to do that.   FarWest's idea is a good one and can be accomplished with all the usual string functions:  Left(), Mid(), Right(), etc and more than likely, you'll use Mid() the most.

Jim.
0

retiredAuthor Commented:
In response to FarWest, thank u for your suggestion, but if u can spare the time to give me a sample code.  Thank u.
0

Commented:
This doesn't use FarWest's array idea (I was writing it before the first response) and is probably not as efficient, but it works...

``````Function RandomiseString(inputString) As String
mystr = inputString
myStrLen = Len(inputString)
resultstring = ""
Do Until Len(resultstring) = myStrLen
random_number = Int(Len(mystr) * Rnd) + 1
'Debug.Print random_number
resultstring = resultstring & Mid(mystr, random_number, 1)
mystr = Left(mystr, random_number - 1) & Right(mystr, Len(mystr) - random_number)
Loop
Debug.Print resultstring
End Function

Sub TestIt()
Debug.Print RandomiseString("SwitchThisPitch")
End Sub
``````
0

Commented:
here is the code
``````Private Sub Command5_Click()
Dim ar() As String
Dim rstr As String
Dim ii As Integer
Dim rn As Integer
ar = Split("a,b,c,d,N,R,U,r,\$,/,T", ",")
Randomize
For ii = 1 To 10
rn = Int(11 * Rnd())  '10 is array lenght
rstr = rstr + ar(rn)

Next
Debug.Print rstr

End Sub
``````
0

Commented:
Sorry, had to tweak mine. I hadn't set the return value for the function:
``````Function RandomiseString(inputString) As String
mystr = inputString
myStrLen = Len(inputString)
resultstring = ""
Do Until Len(resultstring) = myStrLen
random_number = Int(Len(mystr) * Rnd) + 1
resultstring = resultstring & Mid(mystr, random_number, 1)
mystr = Left(mystr, random_number - 1) & Right(mystr, Len(mystr) - random_number)
Loop
RandomiseString = resultstring
End Function

Sub TestIt()
Debug.Print (RandomiseString("1234TqRi*(Ka"))
End Sub
``````

You can feed strings of any length to the function to return them re-ordered randomly.
0

retiredAuthor Commented:
thank u everyone for your inputs.  SimonAdept's solution fits into my design, thank u very much.
0

retiredAuthor Commented:
SimonAdept's solution fits into my design, thank u.
0

Commented:
Final hint, don't forget to call Randomize to link the RND function call with system clock, so probability to have the same output twice will be close to 0
0

retiredAuthor Commented:
In response to FarWest, my soluion has been a crude and dirty one, and hope it gives me the result that I want.  i think I should put up the final code to see what the experts think of it.  Thank u again.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.