2017-10-18 96 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

除了创建新的文本框之外,您可以创建一个文本框,然后在更改单元格A1时更改该文本框的值。 – 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