2017-10-18 1 views
2

Worksheet1! A1에 무언가를 쓸 때 Worksheet2에 텍스트 상자를 만드는 매크로가 필요합니다. 문제는 데이터를 새로 고칠 때마다 새로 고치기를 원한다는 것입니다. 하나 만들었지 만 매크로가 다시 실행되므로 다른 텍스트 위에 하나씩 여러 텍스트 상자가 남습니다. 또한 셀이 비어 있으면 텍스트 상자를 삭제하려면.텍스트 상자 새로 고침 VBA

어떤 도움을 주셔서 감사합니다. 감사.

Sub criarcaixastexto() 

    Dim wsActive As Worksheet 
    Dim box As Shape 

    Set wsActive = Worksheets(2) 
    Set box = wsActive.Shapes.AddTextbox(msoTextOrientationHorizontal, 20, 20, 100, 50) 

    box.TextFrame.Characters.Text = Range("Folha1!A1").value 

End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$A$1" Then 
     Call criarcaixastexto 
    End If 
End Sub 
+0

Newtextboxes를 만드는 대신 하나의 TextBox를 만든 다음 A1 셀을 변경하면 해당 TextBox 값을 변경할 수 있습니다. – danieltakeshi

+0

@danieltakeshi - 그 좋은 생각이지만, OP는 값이 비어 있으면 그것을 삭제하려고합니다. – Vityata

+1

그래, 나는 팁을 주었다. 왜냐하면 나는 TextBox 값을 변경하는 것이 더 간단하고 더 나은 시간 성능을 가지고 있다고 생각하기 때문이다. – danieltakeshi

답변

2

하는 빈 값이 하나에 이벤트를 변경 무시하려면 :

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Count > 1 Then Exit Sub 'to avoid multiple selection. 
    If Target.Address = "$A$1" Then 
     RemoveShapes 
     If Len(Target) > 1 then Criarcaixastexto 
    End If 
End Sub 

이 새로 작성하기 전에 모양을 제거합니다 여기 내 코드입니다.

Sub RemoveShapes() 

    Dim shp As Shape 
    For Each shp In Worksheets(2).Shapes 
     If shp.Type = msoTextBox Then shp.Delete 
    Next shp 

End Sub 
+0

정말 고마워요,하지만 A1에서 값을 삭제하면 모양이 삭제되지 않습니다. 그게 가능하니? 오래된 것들을 지우지 만 셀이 비어 있다면 여전히 텍스트 박스가 있습니다. – user7409049

+0

@Inescosta - 편집을 확인하십시오. – Vityata

+1

완벽한 고맙습니다. – user7409049

관련 문제