Hi
I did it with a formula solution using a helper cell to make the formulas more manageable - you can do it without if you use 2007 or 2010 which allow longer formulas but debugging the formula will be a nightmare. Based on your example I have assumed that you can break the address at any comma followed by a space - if you want something different (for example breaking at spaces) you can probably adjust my formulas.
You could also do the same in VBA if you want
In the following it assumes your original long string is in A1
B4 contains the maximum lenth of your line (I used 22 characters)
D4 contains the shortest possible line (I used 15 characters)
A6, A7 and A8 contain the 3 lines to print - the final line may be longer than the maximum and includes any text that isnt in the lines above
A10 contains my helper formula
These are the formulas:
In A6
=LEFT(A1,IF(FIND(", ",A1)<$D$4,IF(FIND(", ",A1,1+FIND(", ",A1))>$B$4,$B$4-1,FIND(", ",A1,1+FIND(", ",A1))),IF(FIND(", ",A1)>$B$4,$B$4-1,FIND(", ",A1))))&IF(FIND(", ",A1)>$B$4,"-",IF(AND((FIND(", ",A1)<$D$4),(FIND(", ",A1,1+FIND(", ",A1))>$B$4)),"-",""))
IN A7
=TRIM(LEFT(A10,IF(FIND(", ",A10)<$D$4,IF(FIND(", ",A10,1+FIND(", ",A10))>$B$4,$B$4-1,FIND(", ",A10,1+FIND(", ",A10))),IF(FIND(", ",A10)>$B$4,$B$4-1,FIND(", ",A10))))&IF(FIND(", ",A10)>$B$4,"-",IF(AND((FIND(", ",A10)<$D$4),(FIND(", ",A10,1+FIND(", ",A10))>$B$4)),"-","")))
In A8
=TRIM(SUBSTITUTE(A10,A7,""))
In A10 - my helper formula
=SUBSTITUTE(A1,LEFT(A1,IF(FIND(", ",A1)<$D$4,IF(FIND(", ",A1,1+FIND(", ",A1))>$B$4,$B$4-1,FIND(", ",A1,1+FIND(", ",A1))),IF(FIND(", ",A1)>$B$4,$B$4-1,FIND(", ",A1)))),"")
There is probably a slicker way to do this
but it works!
The result from your example is:
146, Hatfield Avenue,
Campus Tower, 5/F,
Hertfordshire, United Kingdom
BTW - here in the sandpit you get addresses like my example but mail only gets delivered to PO Boxes for obvious reasons!
PS - if you change my formulas note that FIND and SEARCH are more or less the same function but one is case sensitive (I cant remember which one and it doesnt matter if you are looking for commas or spaces) so you may have to change FIND for SEARCH depending on what breaking character you use - check the help