Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 576
  • Last Modified:

How do I call a function within a VBA procedure ?

Hi Experts,

I am creating a VBA procedure within my Excel 2010 application in which I need to sort a 2-dimensional array.

Having scoured the Web I seem to have found a more robust VBA code example of a Sort function. However, not having ever used functions before, the function is falling over at the first stage, that is, it gives me compilation errors.

This is the code within my procedure:

   Dim ClientsArray() As Variant
   Dim InputArray() As Variant

' Load Clients array from Clients sheet (B3:L).........This works fine !
   ClientsArray() = Range(Sheets("Clients").Cells(3, 2), Sheets("Clients").Cells(Sheets("Clients").Cells(3, 1).End(xlDown), 12)).Value

   InputArray = ClientsArray()

'Sort the array by Name (2nd column) ascending........This doesn't work !
   ClientsArray() = QSortInPlace( _
    ByRef InputArray As Variant, _
    Optional ByVal LB As Long = -1&, _
    Optional ByVal UB As Long = -1&, _
    Optional ByVal Descending As Boolean = False, _
    Optional ByVal CompareMode As VbCompareMethod = vbTextCompare, _
    Optional ByVal NoAlerts As Boolean = False) As Boolean

The above piece of code is obviously wrong as it highlights in red but I can't seem to get the syntax right. I've attached the called function code in a text file.

Any help will be appreciated.
Toco
Sort-Function-VBA-code.txt
0
Tocogroup
Asked:
Tocogroup
2 Solutions
 
Rgonzo1971Commented:
Hi

you cannot use a function and declare it  at the same time

  Dim ClientsArray() As Variant
   Dim InputArray() As Variant

' Load Clients array from Clients sheet (B3:L).........This works fine !
   ClientsArray() = Sheets("Clients").Range(Cells(3, 2), Cells(Cells(3, 1).End(xlDown), 12)).Value

   InputArray = ClientsArray()

'Sort the array by Name (2nd column) ascending........This doesn't work !
   bIsSorted = QSortInPlace(ClientsArray)
'...
End Sub

Function QSortInPlace()
'...
End Function

Open in new window

Regards
0
 
Saqib Husain, SyedEngineerCommented:
Try

   successful = QSortInPlace(InputArray, LB, UB, Descending, CompareMode, NoAlerts)
0
 
TocogroupAuthor Commented:
Thanks both for your solutions. I understand now that this function returns a Boolean 'result'. However, what the function didn't tell me until I invoked it was that it only works for single arrays.

Back to the drawing board.
Thanks again
Toco
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now