>> Why does my selection set only work on the first block and does not run on the others?
Because of this:
(setq ss (ssname ss i))
What you're doing, is overwriting ss. ss used to be your whole selection, but the instant you execute this line of code ss now means the first block.
You should put this in another variable.
for example:
(setq blk (ssname ss i))
(LM:vl-SetAttributeValue (vlax-ename->vla-object blk) "tag" "value")
Also ... "tag" "value", this is weird. This means the value "value" gets set.
What you want is
(LM:vl-SetAttributeValue (vlax-ename->vla-object blk) tag value)
This means the value "ITEM1", or "ITEM2" ... gets set.
Also, DEMO doesn't do what you want it to do. But I'll stop here, for now.