@iCount only exists within the scope of the script that creates it. It is not visible to dynamic SQL queries, as each runs in a separate scope. Temp tables, however, belong to the connection and thus can be referenced in dynamic SQL. So try this:
DECLARE @iCount INT
DECLARE @strQry AS VARCHAR(4000)
DECLARE @strEmp AS VARCHAR(200)
SET @strEMP = '993,1040,1061'
create table #MyiCount (iCount int)
SET @strQry = 'INSERT INTO #MyiCount (iCount) SELECT COUNT(id) FROM tableA WHERE status=91 AND Employee IN ('+ CONVERT(VARCHAR(4000),@strEmp)+')'
set @iCount = select top 1 iCount from #MyiCount
drop table #MyiCount
If it's not practically useful, then it's practically useless.