2015-03-13 2 views
3

мне нужно скопировать все Колонка L моего Лист1 внутри TextBox на Лист4.
я пытаюсь сделать с этим:Скопируйте весь столбец в текстовое поле

Sub ToTB() 
    Sheets("Sheet4").TextBoxes("TextBox 2").Text = Sheets("Sheet1").Range("L:L").Text 
End Sub 

Но тогда появляется это сообщение:

Применение или объекта определенные ошибки

Любые предложения ??

ответ

5

Вот что-то немного прямое. Если у вас уже есть TextBox и просто нужно добавить значения из диапазона ячеек:

Sub Test() 
    Dim srng As Range 
    Dim sWs As Worksheet: Set sWs = Sheets("Sheet1") 
    Set srng = sWs.Range("L1", sWs.Range("L" & sWs.Rows.Count).End(xlUp)) 
    With Sheets("Sheet4").Shapes("Textbox 2").OLEFormat.Object 
     .Text = Join(Application.Transpose(srng), vbCrLf) 
    End With 
End Sub 

или если вы хотите, добавил он, как то, что Гэри отвечал:

Sub Test() 
    Dim sWs As Worksheet, dWs As Worksheet 
    Set sWs = Sheets("Sheet1"): Set dWs = Sheets("Sheet4") 

    Dim dRng As Range, sRng As Range 
    Set dRng = dWs.Range("A1:A10") 'change to suit 
    Set sRng = sWs.Range("L1", sWs.Range("L" & sWs.Rows.Count).End(xlUp)) 

    With dWs.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 
     dRng.Left, dRng.Top, dRng.Width, dRng.Height).OLEFormat.Object 
     .Text = Join(Application.Transpose(sRng), vbCrLf) 
    End With 
End Sub 
2

С этой Лист4:

enter image description here

Запуск этого макроса:

Sub CoverRange() 
    msg = "" 
    Sheets("Sheet4").Activate 
    For Each r In Intersect(ActiveSheet.UsedRange, Range("L:L")) 
     msg = msg & vbCrLf & r.Text 
    Next r 

    Sheets("Sheet1").Activate 
    Dim L As Long, T As Long, W As Long, H As Long 
    Set r = Range("B9:B20") 
    L = r.Left 
    T = r.Top 
    W = r.Width 
    H = r.Height 
    With ActiveSheet.Shapes 
     .AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select 
    End With 
    Selection.Characters.Text = msg 
End Sub 

будет производить это в Лист1

enter image description here

+0

Большое спасибо Гэри, это именно то, что я искал –

+0

@JorgeMolano Check [accepting answer] (http://stackoverflow.com/help/someone-answers) как один из способов сказать «Спасибо» в Stackoverflow. Это также хорошо объяснено [здесь] (http://stackoverflow.com/tour). – L42

Смежные вопросы