PDA

View Full Version : Sort Alphabetical



Kumar
04-03-2009, 03:17 AM
hi,


I have an array of 5 values i need to verify the listed array is in a alphabetical order or not

Bob Phillips
04-03-2009, 06:46 AM
What sort of array? A VBA array, worksheet array? And in what applicationb?

Kumar
04-06-2009, 05:30 AM
What sort of array? A VBA array, worksheet array? And in what applicationb?
Its an VBA Array

lucas
04-10-2009, 12:35 PM
Here is an example of how to use a bubble sort on a vba array. In a standard module and run the sub "test"

Option Base 1
Option Explicit
Sub test()
Dim arrayContacts() As Variant

arrayContacts = Array("James", "Mary", "Tom", "Beth", "Bob", "Chris", _
"Daniel", "Lari", "Al", "Teresa")
Call BubbleSort(arrayContacts)

End Sub
Sub BubbleSort(MyArray() As Variant)
Dim First As Integer
Dim Last As Integer
Dim i As Integer
Dim j As Integer
Dim Temp As String
Dim List As String
First = LBound(MyArray)
Last = UBound(MyArray)
For i = First To Last - 1
For j = i + 1 To Last
If MyArray(i) > MyArray(j) Then
Temp = MyArray(j)
MyArray(j) = MyArray(i)
MyArray(i) = Temp
End If
Next j
Next i
For i = 1 To UBound(MyArray)
List = List & vbCrLf & MyArray(i)
Next
MsgBox List
End Sub

example attached.

lucas
04-18-2009, 03:09 PM
Malcolm suggests that we show the results in the sub test rather than from the function....he has offered the following change which does just that...a good suggestion. Thanks Malcolm.
Option Explicit
Sub test()
Dim arrayContacts() As Variant
Dim i As Integer
Dim List As String
arrayContacts = Array("James", "Mary", "Tom", "Beth", "Bob", "Chris", _
"Daniel", "Lari", "Al", "Teresa")

Call BubbleSort(arrayContacts)

For i = 1 To UBound(arrayContacts)
List = List & vbCrLf & arrayContacts(i)
Next
MsgBox List

End Sub
Sub BubbleSort(MyArray() As Variant)
Dim First As Integer
Dim Last As Integer
Dim i As Integer
Dim j As Integer
Dim Temp As String
Dim List As String
First = LBound(MyArray)
Last = UBound(MyArray)
For i = First To Last - 1
For j = i + 1 To Last
If MyArray(i) > MyArray(j) Then
Temp = MyArray(j)
MyArray(j) = MyArray(i)
MyArray(i) = Temp
End If
Next j
Next i
For i = 1 To UBound(MyArray)
List = List & vbCrLf & MyArray(i)
Next
End Sub