My general disclaimer applies - "It aint pretty but it works"
There is a regen after each selection, and the variables aren't reset, but I've run out of time to make it a bit more friendly. Others here could probably do quite a bit better, but hey, it works.
Enjoy!
;match_att_ht.lsp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;start prog
(defun c:match_att_ht ()
(setq en1 (entget (car (nentsel))))
(setq en2 (cdr (assoc 40 en1)))
(setq cntr1 1)
(while (= 1 cntr1)
(setq ent1 (nentsel "\nSelect any text object <HIT ESC TO STOP>:" ))
(setq en1-2 (car ent1))
(setq en3 (entget (car Ent1)))
(setq en3
(subst(cons 40 en2)
(assoc 40 en3)
en3))
(entmod en3)
(entupd en1-2)
(command "regen")
(princ)
);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;while
)