How to make data flow from one cell to next in Excel

I've been using Excel for years and this may not be possible. But I figured if it was, someone here would know how.
If it's not, I'd be interested in options.

I'm trying to create a simple receipt using Excel Invoice templates. We've tried several and even tried making one from scratch.
What we are wanting to do, is to have the description of an item drop down to the next line if it won't fit in the allotted space.  
Qty (column)              Description (column)                 Price (column)
                                      If I start typing here when it
                                      gets to the next line I want it
                                      to drop down to the next cell.

We are familiar with word wrap, and that creates unexpected and unwanted behavior. It will kick all the cells down a line and this causes the invoice/receipt to create a second unwanted page.  

We are using Excel 2010, if that makes any difference, on Windows 7 Pro systems.

Any and all help is appreciated.
LVL 15
Jeff PerkinsOwnerAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

leonstrykerConnect With a Mentor Commented:
Ok, here is a primer

To summarize you will need to do the following:
1. Open your Invoice template
2. Press Alt - F11 keys - This will open the VB Editor. You should see VBAProject  on the left side
3. Double click on the sheet name containing your invoice in the VBAProject window. You should get a blank sheet on the right side. It will say (General) and (Declarations) in the two drop down boxes above the sheet
4. Copy/Paste the code I gave you above into this sheet.
5. Go back to the Excel sheet of your invoice and save. Make sure you are saving the file with a .xls or .xlsm extension depending on your Excel version.
6. Try typing more than 100 characters into your invoice sheet.

If everything goes fine, you will want to adjust that number of characters. To do that, use Alt-F11 to go back to the editor and change the value of MAX_STRING_LEN from 100, to the one you want. Save and try it out.

Let me know if you are having issues,
Can't be done. Wrap text is as good as it gets.
Jeff PerkinsOwnerAuthor Commented:
Any suggestions as to something else we can use to do this?
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

You may be able to do something with the selection change event through VBA. Basically the idea would be to check the size of the string after the user hits Enter and cut the string if its too large. There are some limitations on this based on your invoice template, but it should not be too hard to code for.

Jeff PerkinsOwnerAuthor Commented:
Is this something you think you would like to undertake?
Ok, lets give this a try. Place this code in the sheet module. I am assuming 100 character string length here. If you want bigger or smaller you can change the parameter.
Private PreviousActiveCell As Range
Private Const MAX_STRING_LEN = 100

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static pPrevious As Range
Dim strPrimary As String, strNext As String
    On Error Resume Next
    If pPrevious.Address = "" Then
    End If
    If Err.Number <> 0 Then
        Set pPrevious = Me.Cells(1, 1)
    End If
    Set PreviousActiveCell = pPrevious
    Set pPrevious = ActiveCell

    strPrimary = PreviousActiveCell.Value

    If Len(strPrimary) > MAX_STRING_LEN Then
        strNext = Right(strPrimary, Len(strPrimary) - MAX_STRING_LEN)
        strPrimary = Left(strPrimary, MAX_STRING_LEN)
        PreviousActiveCell.Value = strPrimary
        PreviousActiveCell.Offset(1).Value = strNext
    End If
End Sub

Open in new window

Please note that I have not tested this in great detail and some adjustments will need to be made.

Jeff PerkinsOwnerAuthor Commented:
Ok Leon, perhaps I should have explained before asking you to take this on, I'm an Excel user... and not much more than that.  How do I "Place this code in the sheet module"?  I understand basics of what a module is, or believe it's a snippet of code such as you have written that creates more functionality.  But have no idea how to add or use a module in a template.
  If that makes this task undesirable, I understand, but if not, I'm a quick study if you can tell me how to create a module, and utilize it.
Rob HensonFinance AnalystCommented:
Stick with Wrap Text but then set the Page settings to Fit to One Page.

Or if you want to limit the description to say 6 lines, merge 6 cells and then description can then fill the merged cells.

You can also set it to "Shrink to Fit", you have to untick Wrap text first as Shrink is greyed out when Wrap text is selected.

Rob H
Martin LissOlder than dirtCommented:
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.