the script I use will show you all objects (SP, Tables, Functions) for a specified Database name and all the users that have rights on them, but you can narrow the search and extract exactly what you need.
DECLARE @EXEC_SCRIPT NVARCHAR(4000)
DECLARE @DBNAME NVARCHAR(256) = 'DB name'
SET @EXEC_SCRIPT = 'USE ['+ @DBNAME + ']
select DB_NAME () as [db_name],
a.class_desc as [class_type] ,
user_name(a.grantee_principal_id) as [user_name] ,
isnull(OBJECT_NAME(a.major_id),'''') as [object_name],
isnull (b.name,'''') as [column_name] ,
a.permission_name as [permission_name] ,
a.state_desc as [permission_type] ,
c.type_desc as [object_type],
CASE d.type
WHEN ''A'' THEN N''ApplicationRole''
WHEN ''R'' THEN N''Role''
ELSE N''User'' END as [security_type],
CASE WHEN a.major_id < 0 THEN N''Y''
ELSE N''N'' END as [system_object],
d.is_fixed_role as [is_fixed_role]
from sys.database_permissions a left join sys.columns b
on a.minor_id = b.column_id and a.major_id = b.object_id
left join sys.objects c on c.object_id = a.major_id
INNER JOIN sys.database_principals AS d ON d.principal_id = a.grantee_principal_id
where a.class_desc <> ''DATABASE'' and user_name(a.grantee_principal_id) <> ''public''
order by user_name'
EXEC master.dbo.sp_executesql @EXEC_SCRIPT