Skip to main content
Skip to main content
Microsoft 365

Macros search form

Today’s guest writer is Kerry Westphal—our resident macro expert.

A common feature in well-designed applications is giving users the ability to quickly focus on the data they care about. A search or filter form allows users to specify criteria to limit the records returned. This also enhances performance because the entire recordset is not brought in.

A typical filter form provides unbound text boxes, combo boxes, and other controls where users can build and refine requirements for records to meet in order to be displayed on the form. Allen Browne has a great VBA example here where he uses a filter form to search for clients by name, type, city, level and/or start and end dates. In Allen’s example, the form Filter property is set to a string that is built based on user criteria, and the FilterOn action is invoked.

To accomplish the same goals using macros that run on the Web, let’s walk through an example together. This demonstrates using the BrowseTo action to swap out the subform, TempVars are used to store form criteria and If statements decide which criteria is relevant.

For tracking issues that arise at work, I have a database where I filter issues by words in the summary, person it is assigned to, and the state of their resolution. When I first browse to the form, instead of showing data, the subform is populated with a form which displays a message that says “Select a filter using the Summary, Assigned To and Resolution fields to view the open issues.â€

image

The On Click event of the search button clip_image001 calls the BrowseTo macro action, which replaces the Issues datasheet contained by the subform with only showing only data that meets the specified criteria.

image

In the example above, I have specified criteria to limit issues displayed to those with “macro†in the Summary that have been assigned to Kerry Westphal. When I click the search button clip_image001[5] my macro will run and the filtered records will show.

Before we consider all the criteria, let’s construct a simple macro that considers only the Summary criteria textbox (txtSummary). Once our macro is working, we will add in more logic.

The first thing we will do in the macro is set up the error handler using the OnError action to specify a Submacro named ErrorHandler to be called in case there is an error message to display. Next we will use SetTempVar to assign the value contained by the txtSummary control to a TempVar. If the txtSummary control contains a value, the Like operator is used with wildcards in the Where Condition argument of the BrowseTo action to show the proper records. Otherwise, the BrowseTo action will show all the records. More information about the BrowseTo action can be found here

You can grab the XML here (Note: to copy this XML to paste into the macro designer, use Page->View Source and copy the XML from there).

image

Now that our basic macro is tested (I did that for us and it works J), we will add another condition to see only the issues assigned to the person selected in the dropdown. We can use the same logic to filter on the Assigned To field that we used for filtering on the Summary field.

In our assignments section at the top of the macro, we will add another SetTempVar action to store the AssignedTo criteria on the form.

  • If the AssignedTo criteria is not filled out, the logic we built above to consider Summary criteria for BrowseTo will be executed.
  • If AssignedTo critieria is filled out but the Summary criteria is not, only AssignedTo will be considered in the BrowseTo Where Condition.
  • If both AssignedTo and Summary criteria are specified, the Where Condition of BrowseTo concatenates them both.

Get the XML here.

image

We can do a similar check for Resolution criteria. This can continue for as many fields as we want to validate in our filter form to show as many or few records as needed. The macro is below and you can grab the XML for the entire macro here.

image

What macros have you been making?

You may also like these articles

Image for: Manufacturing business owner wearing a mask and reviewing schedule in Shifts within Microsoft Teams.

Upcoming commercial preview of Microsoft Office LTSC

At Microsoft, we believe that the cloud will power the work of the future. Overwhelmingly, our customers are choosing the cloud to empower their people—from frontline workers on the shop floor, to on-the-go sales teams, to remote employees connecting from home. We’ve seen incredible cloud adoption across every industry, and we will continue to invest…

Image for: Female enterprise employee working remotely from her home office, chatting with a headset on.

How partners are fueling growth and innovation on Microsoft Teams

Teams not only enables you to meet, chat, call, and collaborate with your team, but it also serves as a platform that brings together the apps and workflows that help you get your work done.

Image for: image of a woman standing over a desk at home, looking down at her laptop

The evolution of mobile productivity, even when we’re a little less mobile

What’s the one essential you’d go back home for if forgotten? Maybe it’s your mask. But also, your mobile phone, right? Your personal organizer, your digital wallet, your instant camera—your mobile device has become the most essential tool you use to stay connected to the people and things that are important at home, at the office,…