There have been a few replies to your question, but none of them is straight to your question. I am not questioning on why you use COM API instead of .NET API (if so, arcticad's repoly has detailed code for you to use) here, but you may want to make sure you do have good reason using COM API instead of .NET API.
Yes, in your case, you do declare
Dim Atributos As Object
Atributos = blockCruce.GetAttributes
Because GetAttributes() method DOES NOT return an AcadAttributeRefernce object, rather it returns an Viriant (in COM API) or Object (in .NET it is equivelant to Variant in COM), which is an ARRAY of AcadAttributeReference object.
So, you cannot declare it as anything else but Object
The next line of code is wrong:
atributos.TextString = "X= xxx"
because atributos is an ARRAY of AcadAttributeReference object, not an AcadAttributeReference, thus, the array DOES NOT have a property "TextString". The code should be something like:
atributos(index).TextStriing="xxxxxx"
That is, only a specific element in the array is an AcadAttributeReference and has "TextString" property that you can get/set.
Again, make sure you have GOOD reason to use COM API.