You're building a string and put its result in @s_query variable.
So you must convert your int variable as @PageIndex1 and @PageSize1, in this way:
SET @s_query = 'SELECT ' + @ColNames1 + ' FROM ##Results
WHERE ##RowNum BETWEEN('+CONVERT(varchar(20), @PageIndex1)+'-1) * '+CONVERT(varchar(20),@PageSize1)+' + 1
AND((('+CONVERT(varchar(20),@PageIndex1)+' -1) * '+CONVERT(varchar(20),@PageSize1)+' + 1) + '+CONVERT(varchar(20),@PageSize1)+') - 1';
If you want maintain the readability of your code you can define two variables:
DECLARE @pistr varchar(20)
DECLARE @psstr varchar(20)
SET @pistr = CONVERT(varchar(20), @PageIndex1)
SET @psstr = CONVERT(varchar(20), @PageSize1)
So your query becomes:
SET @s_query = 'SELECT ' + @ColNames1 + ' FROM ##Results
WHERE ##RowNum BETWEEN('+ @pistr +'-1) * '+@psstr+' + 1
AND((('+@pistr+' -1) * '+@psstr+' + 1) + '+@psstr+') - 1';