without having to type anything?
Type in where? The calculated value should always be the current date and the expired date 6 months later. You posted the expression that calculates this but left off the part that shows what it is being applied against. If that's the name of the control that holds the start date, which defaults to today, I presume you're allowing the user to enter a new 'start date' and you want to update the expired date. In that case, you don't seem to realize that from moment that you open a database, for anything that goes on, there is likely an event for that - including the opening of the db itself. Most events are listed in the property sheet for any object within the db. You should be able to learn what each does simply by pressing the F1 key, as a starting point for making a choice. Likely what you need is the After_Update event for when the user enters a new date in the 'start date' field, if I understand what you're doing. As I just said, it should be a simple matter for you to decide why you'd use that event over the On_Change event, for example.
Knowing of the event is only a small part of the battle. The rest requires that you understand how to code for what you want to happen, or at least be able to ask a targeted question if you don't find a suitable example on the many, many web page sources out there. In your case I suspect you'd need this in the after update event for your control:
Me.NameofExpiredControl = DateAdd("m",6,Me.NameOfStartDateControl)
Me.Refresh
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.