As you said, 'lay_tab' is a list, not a string. wcmatch accepts a string as an argument. You would need to iterate through every item in the list. This should do it (untested).
(defun c:request ()
(if
(vl-some
(function
(lambda (a)
(wcmatch a "*Floor*")
)
)
(layoutlist)
)
(alert "Layout is present")
(alert "Layout is not present")
)
)
Glad to help I do my repeats slightly different, note this processes in opposite order starting at last. Its just preference both ways work.
(repeat (setq i (sslength ent))
(setq rec (vlax-ename->vla-object (ssname ent (setq i (1- i)))))
...
; no need for i + 1
) ; repeat