OK...
Here's the way list box works. When loading the screen where a list box is present, the firmware reads the location for where the data is stored...one time. The data is never updated unless you leave the screen and re-enter the screen.
Therefore, when you highlight the line, your macro runs and $W0-$W89 will hold the data starting at CIO500 in the PLC. But due to the nature of the list box, the data does not appear because it only gets updated when you enter the screen in which the list box appears.
The list box was always intended to be a "picking" mechanism where you pick a particular line from an already established list.
Take heart..there is a solution. Starting with Version 5.0, an update list bit was added. You will find it on the External Control tab of the List Box setup dialog. I would add a line to the macro which sets the bit to update the list.
Here's a little secret for working with macros that need to run continously. Find a location that changes constatly (The PLC Clock is a good example.). Make a numeral display that tracks this location. Use the macro from the list box in this new location and set it to run when the numeral changes. Then hide the numeral display by setting the control flag to No Display. The numeral display should update your list box even though it is hidden.