Ouch. So you do not want a pemanent upgrade.
There is the probleme: no way is perfect, since we can not raise or decrease the range with natives or skill in W3.
Methods:
1-change the unit and replace it with a clone using the same properties, but with a high range. When the unit leaves your region, replace again your unit with the old one.
Cons: hard to code since you maybe need to save a lot of properties for your units; not easy with heroes or morhping units.
2-create 2 upgrades with hundred levels, one who raises the range, one who reduces the range. On unit entering the region, add a level to the upgrade who raises the range, on unit leaving it, add a level to the upgrade who reduces the range.
Cons: when you used all the levels of your upgrade, it will not work again since it is impossible to level down an upgrade. And only upgrade "really" change the range of the unit.
3-give your unit the range you want when it enters the region in the object editor.
Example: your unit has a range of 1000, and, in the region, you want a range of 2000.
Then, in the object editor, you set its range to 2000. After this during the game, you have to detect each time the unit attacks. If the range between the unit and the target is more than 1000 AND that your unit is not in the region, you block the attack by ordering your unit to stop.
Cons: uses a lot the W3's engine if you get a lot of units in your map. More, it's a bit weird since your unit will not try to follow the targets.