2016-08-09 34 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

あなたはあなたがセットアップできることはほとんどヘルパーSubModuleでコードの再利用可能にするために

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

:そうのようなTextBoxのテキストを設定することができます

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 
関連する問題