Dear Jared
Here is what I do (and this should be in the beginners area, btw):
Let's say I want to have a "window" with text that can be scrolled, that is 200x140 px in size.
1. Create new GUI "gui_textwindow" that is 200x140 px in size.
2. Create a label "lab_content" inside the new GUI, that is 200x3000 px in size, position it so that it's top is at the top of the GUI
3. Create an int -variable called "labelYpos" with default value of 0. Whenever the gui_textwindow is opened, reset this to 0 and reset lab_content's Y position to it's default value
4. Create a couple of buttons that move "lab_content" up or down by changing it's Y coordinate by, let's say: 30 px increments
5. When player presses the button that moves the label up, check if labelYpos is greater than 0 before allowing the action
6. When player presses the button that moves the label up, check if labelYpos is less than 1000 or if you implement a way to calculate rows you can refer to that too, before allowing the action
You now have a scrolling label with automatic word-wrap.
For examples of this in use, download my He Watches demo and scroll the objectives or something, I did it like this.