Modificar un único campo calculado de una consulta es modificar su SQL, luego mi propuesta inicial es perfectamente válida para lo que quieres hacer.
Afinando un poco más, podrías crear un procedimiento al que le pases la expresión de cálculo del campo, y opcionalmente el nombre que quieres para ese campo (por si lo quieres modificar también), y dentro del procedimiento tienes la parte "fija" de la SQL. Algo así:
Public Sub modificaConsulta(laExpresion As String, Optional elNomCampo As String)
Const SQL1 As String="SELECT Campo1, Campo2, " 'Aquí irían el SELECT y los campos que vaya a mostrar la consulta hasta el campo calculado (fíjate que acaba con coma (,) y espacio ( ) antes de las comillas)
Const SQL2 As String=" , Campo X, CampoY FROM Tabla WHERE... Order BY..." 'Aquí iría el resto de la SQL (campos que siguen al calculado, si los hay, el FROM y en su caso el WHERE y ORDER BY que tenga tu SQL). Fíjate que empieza con un espacio ( ) y una coma (,), pero si después del campo calculado a modificar ya va el FROM, quita la coma)
If Nz(elNomCampo,"")="" Then elNomCampo="Expr"
CurrentDb.Querydefs("TuConsulta").SQL=SQL1 & laExpresion & " AS " & elNomCampo & SQL2
End Sub
Un detalle a tener en cuenta es que la expresión del nuevo campo la tienes que hacer como si la hicieras directamente en la SQL del editor de consultas, es decir, has de usar las funciones con los nombres en inglés, la coma como separador, las comillas dobles cambiarlas por comillas simples...
Usando el ejemplo que propones, si la consulta actual fuera (marco en negrita el campo calculado):
SELECT Campo1, Campo2, Campo3, Campo1 & Campo2 AS Expr FROM TuTabla ORDER BY Campo1
El procedimiento que tienes que poner, para este caso es:
Public Sub modificaConsulta(laExpresion As String, Optional elNomCampo As String)
Const SQL1 As String="SELECT Campo1, Campo2, Campo3 "
Const SQL2 As String=" FROM TuTabla Order BY Campo1"
If Nz(elNomCampo,"")="" Then elNomCampo="Expr"
CurrentDb.Querydefs("TuConsulta").SQL=SQL1 & laExpresion & " AS " & elNomCampo & SQL2
End Sub
Cuando quieras cambiar el campo calculado, llamarías al procedimiento así (te dejaría como nombre "Expr")
modificaConsulta("[Campo5] & '_' & IIf(Left([Campo6],3)='ABC','1','2')")
o así, si le quieres dar otro nombre al campo calculado:
modificaConsulta("[Campo5] & '_' & IIf(Left([Campo6],3)='ABC','1','2')", "NuevoCampo")
Obviamente lo puedes hacer desde un formulario, con un cuadro de texto (txtExpresion) donde pongas la expresión nueva (ahí sí podrías usar comillas dobles, pero el separador seguiría siendo la coma y los nombres de las funciones en inglés) y opcionalmente otro cuadro de texto (txtNuevoNom) para el nombre,
Y llamarías al procedimiento así (si no pones el segundo cuadro de texto):
ModificaConsulta(Me.txtExpresion)
O así (si lo pones):
ModificaConsulta(Me.txtExpresion, Nz(Me.txtNuevoNom))