I'm not an "expert" - but I found one solution that works:
Set up a table which holds the parameter. You can then query by this value directly in your cross tab query.
For example to select all records of a certain date, set up a table (TableName: "DateForQuery", with One field name: "SelectedDate"

Enter the one date you want to select.
In your Crosstab query, in the rowheader field for the date enter in the criteria section:
=DLookUp("[SelectedDate]","DateForQuery"
This should work without giving you that annoying error message!
If you have to have it more user ffiendly (ie make entering the date into the table transparent to the user, ) you can also setup a query which updates your table with a date which is prompted for. (i.e. use an updatable query and enter the phrase [Enter Selection Date] in the query- have it update the "DateForQuery" field in your table with this value, then set up a macro which runs your report.This Macro would then run two queries, 1) thequery which updates the table with your parameter, and then the second query which runs the crosstab.
Good Luck!