Thanks Lee! revised code below but nothings happening...wonder whats wrong..
or is it on my side?
(vl-load-com)
(defun c:LayAllThaw ()
(vlax-for lay (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-put-Freeze lay :vlax-false))
(princ))
(defun c:LayAllOn ()
(vlax-for lay (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-put-LayerOn lay :vlax-true))
(princ))
(defun c:LayAllShow () (c:LayAllThaw) (c:LayAllOn))
(setq *LayUnHide-StateName* "*LayerUnHide*")
(defun c:LayUnHide (/ *error* LayersToTurnOn en)
(defun *error* (msg)
(if (layerstate-has *LayUnHide-StateName*)
(progn (layerstate-restore *LayUnHide-StateName* nil) (layerstate-delete *LayUnHide-StateName*)))
(cond ((or (not msg) (wcmatch (strcase msg) "*EXIT*,*QUIT*,*ABORT*"))))
(t (prompt (strcat "*** Error: " msg " ***"))))
(princ))
(layerstate-save *LayUnHide-StateName* 3 nil)
(c:LayAllShow)
(while (setq en (entsel "\nSelect object on layer to unhide: "))
(setq LayersToTurnOn (cons (cdr (assoc 8 (entget en))) LayersToTurnOn)))
(*error* nil)
(vlax-for lay (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (vl-position (vla-get-Name lay) LayersToTurnOn)
(progn (vla-put-LayerOn lay :vlax-true) (vla-put-Freeze lay :vlax-false))))
(princ))