2016-08-09 50 views
1

我一直在尝试编写一个宏,它将动态地填充新表单上的文本框,并将其他表单中的单元格的值。将单元格值复制到文本框vba

我设法得到它的工作使用这样的:

Sub copyDetail() 

' Define variables 

Dim pre As Worksheet 
Dim des As Worksheet 

Set pre = Sheets("Presentation") 
Set des = Sheets("Description") 

Dim i As Integer 
Dim lbl As String 

' Scroll through labels and copy where boolean = 1 

For i = 2 To 17 
    If des.Cells(i, 2) = 1 Then 
     lbl = des.Cells(i, 11) 
     Sheets("Presentation").Select 
     ActiveSheet.Shapes.Range(Array("TextBox 1")).Select 
     Selection.Text = lbl 

    Else 

    End If 
Next i 

End Sub 

我基本上希望能够做的正是这样做,但没有使用选择所有的时间,因为这改变了床单和减慢我的代码(我有许多其他的小分队与这个一起运行)。我试过的东西用这个定义文本框:

Dim myLabel As Object 
Set myLabel = pre.Shapes.Range(Array("TextBox 1")) 

但后来我得到当我尝试调用一个“对象不支持此属性或方法”错误:

myLabel.Text = lbl 

回答

1

你可以设置一个TextBox的文字像这样:

ActiveSheet.Shapes("TextBox 1").TextFrame.Characters.Text = "Hello world" 

你可以建立一个小帮手SubModule,使代码可重用:

Public Sub SetTextBoxText(ws As Worksheet, strShapeName As String, strText As String) 

    Dim shp As Shape 

    On Error Resume Next 
    Set shp = ws.Shapes(strShapeName) 

    If Not shp Is Nothing Then 
     shp.TextFrame.Characters.Text = strText 
    Else 
     Debug.Print "Shape not found" 
    End If 

End Sub 
相关问题