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