I would use different states for the weapon. IE: have a variable called "bulletType" or something, and "if bulletType=0" then the bullet is blocked, "if bulletType=1" the bullet passes through, "if bulletType=2" the bullet can destroy the shield, etc. This variable can be global, but I would attach it to the player sprite (or an invisible detector sprite if you use one).
You'll have to code the different ways the bullet affects the shield for each setting.
Example:
if bulletType=0
+bullet collides with shield
--->destroy bullet
if bulletType=1
+bullet collides with shield
--->(this might just remain blank, since it would pass through and not affect the shield, may want to use a comment so you'll remember why, keep the code in case you need it to perform other duties, or if this is all it is for, delete this section and comment why)
if bulletType=2
+bullet collides with shield
---> destroy bullet, destroy shield