[Webinar] Streamline your web hosting managementRegister Today

x
?
Solved

How do I call a function within a VBA procedure ?

Posted on 2013-11-04
3
Medium Priority
?
599 Views
Last Modified: 2013-11-04
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
Comment
Question by:Tocogroup
3 Comments
 
LVL 54

Accepted Solution

by:
Rgonzo1971 earned 1000 total points
ID: 39620954
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
 
LVL 43

Assisted Solution

by:Saqib Husain, Syed
Saqib Husain, Syed earned 1000 total points
ID: 39620960
Try

   successful = QSortInPlace(InputArray, LB, UB, Descending, CompareMode, NoAlerts)
0
 

Author Closing Comment

by:Tocogroup
ID: 39620992
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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes how you can use Custom Document Properties to store settings and other information in your workbook so that they will be available the next time you open the workbook.
Windows Explorer let you handle zip folders nearly as any other folder: Copy, move, change, and delete, etc. In VBA you can also handle normal files and folders, but zip folders takes a little more - and that you'll find here.
This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.
How can you see what you are working on when you want to see it while you to save a copy? Add a "Save As" icon to the Quick Access Toolbar, or QAT. That way, when you save a copy of a query, form, report, or other object you are modifying, you…

590 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question