What you are doing here is sometimes referred to as named parameters. I believe the syntax you have there is correct. However, named parameters have a specific use.
Code:
DoCmd.OpenForm "frmCustomerContact", _
WhereCondition:="Customer= '" & Me.Customer & "' "
It is more common to place your arguments within the predefined parameters. You do this by separating your arguments with a comma. Use the hint provided as you type to understand the parameter.
Code:
DoCmd.OpenForm "frmCustomerContact", , , "Customer = '" & Me.Customer.Value & "' "
As mentioned, the = operator is used (in your case/example) to equate one operand with another. If it does not match exactly, no joy. Another approach, as mentioned, is to use the LIKE operator. This is acceptable for Text data types. The like operator will allow you to employ wildcards. In Access, use * as a wildcard.
Code:
DoCmd.OpenForm "frmCustomerContact", , , "Customer LIKE '*" & Me.Customer.Value & "' "
'or
DoCmd.OpenForm "frmCustomerContact", , , "Customer LIKE '*" & Me.Customer.Value & "*' "