That code works. (The while loop isn't indented properly, but I assume that's a typo.)
Here's a more efficient version of the loop:
The main difference is that you're reading in the value of A1 once per loop - this'll be faster than reading it for each comparison.
while True:
new = Cell("A1").value
if static != new:
CellRange("C2:E4").clear()
Cell("C2").table = {"mamposteria": data1,
"moretero": data2,
"estructura": data3}[new]
static = new