当我在Worksheet1中编写内容时,我想要一个在Worksheet2中创建文本框的宏!问题是我想刷新数据时刷新它。 我做了一个但是再次运行宏,所以我留下了几个文本框,一个在其他文本框之上。如果单元格为空,我也想删除文本框。
我将不胜感激任何帮助。谢谢。这是我的代码:
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 :(得分: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