If the other references in your code execute correctly but the sequence stops on that line, then there is something that we can't see from your other presentation.
I am thinking that there is something special about Me.txtMXDPO, something that makes it different from Me.txtYearCode or Me.txtPONumber, both of which are the targets of a value assignment above your problem line. Otherwise this would make no sense at all.
The possibilities that come to mind regarding Me.txtMXDPO
- not in scope at the moment because it is in a different section on the form (though I would have expected a different error)
- set to ".Locked=True" or ".Enabled=False" (but again, I would expect a different error)
- maybe was defined in a way such that it does not have a .Value property.
I'm betting on the last one. Just because you call it txtXYZ doesn't mean it is a text box. Names are arbitrary. So... compare the three fields I named on your form and try to identify the differences. This is actually easy in a sense because the odds are you could move that offending line further down in the sequence to see if everything else is working. So you could debug the rest of the code while thinking about this one.
My problem in being more specific is that we can't see the actual form so those would be hard to differentiate what is wrong with that one field. Open the form in Design Mode. Select the control with the required name. Look at its properties.