So, you have VBA code that is doing the lookup explicitly (which isn't really necessary, if you choose one of the other routes I suggested).
Also, note that only works for changes made within the Form. Changes due to queries, imports, or direct table edits would not be picked up by that.
Nevertheless, I said my piece. What you choose to do is up to you, though I think you should just be aware of best practices and potential pitfalls.
If you want to go the route of an Update Query, it would look something like this:
Code:
UPDATE tblMain
INNER JOIN Locale
ON tblMain.City = Locale.City
SET tblMain.State = [Locale].[State]
WHERE tblMain.State Is Null;
Note that if your City name is not unique in your Locale table, you will probably run into issues with whatever route you choose, since your City to State relationship will be One-to-Many.