Limiting user access to tables based on a ROLE
If I had to guess you have them added to the db_owner role as well.  Either that or sysadmin (although less likely).  Administrative roles, specifically DBO and SYSADMIN can not be blocked from access to anything they have control over (dbo - database level, sysadmin - instance level).  I would go back and check first the role that you created and make sure that it is not a member of any other roles that might cause an issue.  db_datareader for instance shouldn't be a big deal.  Second I would check public and make sure IT isn't a member of any other roles.  Then I would check any other roles that the users might be a member of.

All that being said it's also possible you made a mistake when you set up your role and revoked instead of denyed (I've done that type of thing before).  

Last but not least, you should change how you are doing this anyway.  Remove all access from public.  Create a role that has just the access you want them to have and add them to that role.  It is generally considered a bad idea to grant access to public.  Or for that matter to grant lots of access and then deny it to certain people.  It's far better to accidently forget to grant someone access to something, than to forget to deny it.