I wouldn't go through the process of exploding the block. Once upon a time, I had a lisp routine that did something similar.
Consider translating the selected point to the UCS of the block, then programmatically find the rectangle that encompasses that point. Once you know that, you can then select the appropriate attribute and update as needed.
Presumably, the attributes have different tags and are easily identifiable.
Another way would be to simply map the block and filter the point based on the selected location, but that wouldn't be scalable and would break if the block was changed. For example, Presume that the block has attribute A at 1,1 and attribute B at 4,1 and there are two rectangles represented by 0,0:2,2 and 3,0:5,2 with a base of 0,0.
Now, lets say the user picks inside of 11,12 and the block is inserted at 10,10. You would determine that the actual point in relation to the block would be 1,2 and subsequently you would know that attribute A is the one to update.