The code in the article you sent seems like it should work. However, the
macro will insert the text fine if the text in the cell is less than 255
characters, but still leaves the text box blank for strings larger than 255.
Here is what I am using...
Sub Cell_Text_To_TextBox()
' Dimension the variables.
Dim txtBox1 As TextBox
Dim theRange As Range, cell As Range
Dim startPos As Integer
Set wks1 = Worksheets("Patient1")
' Set txtBox1 equal to the active sheet's TextBox object. You can
' replace the ordinal number with your text box name in quotes.
' For example: ActiveSheet.DrawingObjects("Text 1")
Set txtBox1 = wks1.DrawingObjects("Text Box 36")
' Set a range on the active sheet equal to the range object text
' that you are interested in copying to the text box.
Set theRange = ActiveSheet.Range("D42:D72")
'Set the starting position for the text.
startPos = 1
' Create a For-Each construct to loop through the cells in the range.
For Each cell In theRange
' Populate the textbox with the cell values using the Characters
' method.
' Note: Chr(10) can be used to add a new line in the textbox for
' each cell.
txtBox1.Characters(Start:=startPos, _
Length:=Len(cell.Value)).Text = cell.Value & Chr(10)
' Update the startPos variable to keep track of where the next
' string of text will begin in the textbox.
startPos = startPos + Len(cell.Value) + 1
Next cell
End Sub
"John Michl" wrote:
Yes, there are limites (255 characters, I think) but some work arounds.
I used this article awhile back to solve similar problems.
http://support.microsoft.com/default.aspx?kbid=148815
- John
www.johnmichl.com/exceltips.htm
AJL wrote:
I put the message boxes in, and the macro does run to completion. The text
however, still does not appear in the text box, and it is indeed a shape. I
noticed in the message boxes, some of the text returned in the cells is being
truncated when selected. Is it possible that I have exceded some sort of
character limit that is preventing my text from pasting into the text box?
if so, is it possible to overcome that limit? There is definately more text
retuning from the vlookup and it is present in the cell. When I print my
strTextBox buffer however, only a portion appears.
"John Michl" wrote:
Add the message boxes below and it should help you find where the
problem is. If Box 3 shows nothing after the = sign the problem then
is with your code between the For and Next statements. If Box 3 does
have a result, then the problem is with the with Shapes statement which
may indicate that you are using a control rather than a shape.
- John
Sub AddTextToBox()
Dim strTextBox As String
MsgBox "Box 1. Starting macro."
For Each cell In Range("A1:A5")
MsgBox "Box 2. " & cell.Address & " - contents = " & cell.value
strTextBox = strTextBox & cell.Value & Chr(10)
Next cell
MsgBox "Box 3. Contents of strTextBox = " & strTextBox
ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text =
strTextBox
MsgBox "Box 4. Done."
End Sub
AJL wrote:
I entered the macro script you gave me, changing the range to the appropriate
range that contains my vlookups returning text, and the name of the text box
to the correct box. I then assigned the macro to a button. Running the
macro however doesn't put the text in the box, it gives no errors either, it
seems like nothing is happening.
"John Michl" wrote:
Alan -
This simple code will get you started. Range A1:A5 is where the data
is stored. Modify this to suit your needs. You may also need to
change the text box name if you have multiple text boxes on the sheet.
Sub AddTextToBox()
Dim strTextBox As String
For Each cell In Range("A1:A5")
strTextBox = strTextBox & cell.Value & Chr(10)
Next cell
ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text =
strTextBox
End Sub
- John
www.johnmichl.com/exceltips.htm
AJL wrote:
Hello,
I am trying to copy and paste the text returned by several vlookup formulas
to a text box. The amount of text returned to the cells is quite large.
When I set the text box equal to one of the cells, only a portion of the text
appears in the text box. When I set it equal to a range of cells I get
nothing. Is it possible to generate a macro that will copy and paste large
amounts of text that result from numerous equations into a text box?
Thanks.
-Alan Lueke