Could you try this slightly complicated expression? It’s a lot to look at, but I couldn’t come up with a better way to do it. It worked for me using your two example descriptions. If your descriptions are ever longer than two lines, I can change it to accomodate for more lines.
=
/*This checks if there is a dollar sign requiring a page break*/
IIf(InStr(Right(Left([DESCRIPTION], 105), 30), '$')<>-1,
/*This is the part of the description before the dollar sign*/
Left([DESCRIPTION], 75) +
/*This is the section with the dollar sign and the line break*/
Replace(Left(Right(Left([DESCRIPTION], 105), 30), InStr(Right(Left([DESCRIPTION], 105), 30), '$')+1), '$', '{br}') +
/*This is the rest of the description*/
Right([DESCRIPTION], Len([DESCRIPTION])-InStr(Right(Left([DESCRIPTION], 105), 30), '$')-75),
/*This just prints the description normally if there is no dollar sign that would need a line break*/
[DESCRIPTION])
Basically it is taking apart the whole description and putting it back together with a line break. I set it to look between characters #75 and #105 for a dollar sign and add a line break behind it so that it keeps it together. It also will only do it for the first one it finds, that way if there are multiple, you won’t get multiple line breaks.
I couldn’t look at the report, so I couldn’t check the field name, just replace the DESCRIPTION with whatever the field name is.
Hope this helps!