Instead of trying to make all 3 list boxes work, let's just focus on 1. Once you get that working, the others will be done the same way.
I'm assuming you have created a new module and copied and pasted the functions from the FAQ and it compiled with no errors. Now create a query (using the Query Design Builder) that would be a valid query for your report and set the criteria of the query to one item that the user would select from the list box. Note that we're not actually using the list box at this point. We're just trying to get a query to run. So you are hardcoding the criteria, not referencing the list box on the form.
Once you have the query running correctly, switch to SQL view and check out the SQL code the Query Builder generates. The SQL code of your query might look something like this: Select * from ... Where [TableOfCodes].[Satisfaction Code] = 'SA12';
Note how the where clause looks. Now we can build the Tag property of the Satisfaction Code list box. In this case the Tag property of the Satisfaction Code list box would look like this: Where=[TableOfCodes].[Satisfaction Code],String
Now put a command button on your form and in the OnClick event, enter the following code:
Msgbox BuildWhere(Me)
Finally, select one or more items from the Satisfaction code list box and click on the command button you just put on the form. It should return your where clause without the word where.
In the above example I assumed that the Statisfaction code is stored as a string. Hence the ",String" argument in the Tag property. If it is a Long Integer, then change it to ",Long". (The comments in the BuildWhere function explains all of this.)
Once you have this one list box working, then do the same for the other 2.
The query for your report should be just like the one you created in the Query Builder above, without the where clause. Now open your report like this:
DoCmd.OpenReport "YourReportName",,,BuildWhere(Me)