Excel VBATutorial                       


Excel VBA Macros

Email to excel-vba.com


Click to Email
[email protected]

Or let's have a live conversation computer to computeer for free:

Skype ID:

Excel Tutorial on Macros

Excel Consulting

Here is a sample of what you will find in lesson 18 of the downloadable Tutorial on Excel macros

Lesson 18 on Excel Macros (VBA):

VBA Code  for Databases

When Excel recognises you set of data as a database it offers you very powerful database functionalities like sorting and filtering.

Deactivating filters

When you work in an Excel database you might want to make sure that all data filters are off. To this end you will start your procedure with two "If"statements. For example with a database starting in cell A1 here are the two sentences:

Range("A1" ).Select
           If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter

           If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

Sorting Data

Here is a simplified Excel macro to sort data using a criteria in one field. The following Excel macro will work with any size database starting in cell A1 and it will work in any version of Excel (1997 to 2010).

Sub proFilter()

Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

End Sub

Try the Excel macro above with a small table like the following (as you have leand how in the basic exercises for beginners):

Name Number
Jones 1
Tom 2
Barry 3
Peter 4

Here is another simplified Excel macro sorting data using criteria in three different fields.

Sub proFilter()

Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _
        "B2"), Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, _

End Sub

The code in the two procedures above is much simpler than the following recorded macro in Excel 2007 and 2010. This recorded macro will not work in earlier versions of Excel (1997 to 2006).

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A7"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B7"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C7"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:E7")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
    End With

In the downloadable tutorial on Excel macros we offer you much more vocabulary to work with Excel databases and also many more simplified macros that can be used in all versions of Excel. You can you can copy/paste any of them into your own workbooks.

We hope you have enjoyed this introduction to lesson 18
for more on this topic and a complete course on Excel macros download the
Tutorial on Excel Macros

Next Lesson: VBA Code for Variables