Long time ago I put a generic layer change function into a menu lisp and created a series of DEFUNs for the most frequently used standard layers.
It goes something like this:
(defun chlay (str / cmde sset)
(setq cmde (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(cond ((not (tblsearch "LAYER" str))
(prompt
(strcat "\nLayer not found: " str "\n*Invalid*")
)
)
((or (setq sset (ssget "I")) (setq sset (ssget)))
(princ (strcat "Placing objects on layer " str "..."))
(command "CHPROP" sset "" "LA" str "")
(princ (strcat "\n" (itoa (sslength sset))
" in selection changed to layer " str)
)
)
)
(setvar "CMDECHO" cmde)
(princ)
)
;;; Layer standard stuff
(defun C:A21 () (chlay "A21----"))
(defun C:A22 () (chlay "A22-L--"))
(defun C:A24 () (chlay "A24----"))
(defun C:A32 () (chlay "A321---"))
;; ....etcetera
I still use it and still get annoyed when it doesn't create the layer if it doesn't exists .. ummm, now that it's open I just might correct that?
Anyway, is that something you could use?