2016-11-24 56 views
0

我在我的Excel文件中獲得了一個命令按鈕,它在特定位置添加了一個新的文本框。現在我遇到了問題。我想在前一個自動添加文本框。就像我的截圖一樣。我手動創建了「Testeintrag」,並且當我點擊頂部的+時創建了「Titelname hier eingeben」。我手動放在盒子Excel:通過宏位置文本框

ActiveSheet.Shapes.AddTextbox(msoTextOrientationUpward, 932, 270, 27, _ 
    150).Select 

但是,當我再加一條,它只是比我以前的一個,但我想,它創造下我以前的一個下一個,依此類推。我怎樣才能做到這一點?

The Text box "Titelname hier eingeben" gets created when I hit the + on the top.

這就是我的整個宏:

Private Sub CommandButton1_Click() 
ActiveSheet.Shapes.AddTextbox(msoTextOrientationUpward, 932, 270, 27, _ 
    150).Select 
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _ 
    "Titelname hier eingeben" 
End Sub 
+0

您需要一種方法來查找最後一個文本框的位置。如果這些是唯一應該足夠簡單的形狀。然後根據最後一個框的位置指定新框的位置。 – arcadeprecinct

+0

是的,這些是唯一的形狀。我如何找到最後一個盒子的位置?對不起,我沒有真正進入Visual Basic –

+0

您可以將最後一個框的位置直接存儲在某個範圍的表單中,或者存儲在另一個工作表上,然後您可以獲得非常隱藏 – rohrl77

回答

2

EDIT2:根據新的要求更新後的代碼。

Option Explicit 

Sub addayetnothertextbox() 

    Dim mybox 

    Dim top, left, height, width, margin 
    margin = 20 

    With ThisWorkbook.ActiveSheet.Shapes 

     left = .Item(.Count).left 
     top = .Item(.Count).top + .Item(.Count - 1).height + margin 
     width = .Item(.Count).width 
     height = .Item(.Count).height 

     Set mybox = .addtextbox(msoTextOrientationUpward, left, top, width, height) 

    End With 

End Sub 
+1

這不會爲我工作。它仍然將文本框添加到位置932,270,當我添加另一個,它仍然只是重疊... –

+0

是的,這是真的,我有很多要學習:)但我不需要VBA在我的職業,從來沒有使用它之前。 所以實際上我必須爲每一個盒子做'Box2.Top = Box1.Top + Box1.Height + 20'?所以'Box3.Top = Box2.Top + Box2.Height + 20','Box4.Top = Box3.Top + Box3.Height + 20',...'Box180.Top = Box179.Top + Box179.Height + 20 '等等?漂亮的精細不是它... –

+0

嗯,我只有** 2形狀**,但目標是,我可以添加儘可能多的盒子,因爲我喜歡和每個盒子都自動在前一個。所以最多可以像52盒(每年的每週) –

0

由於該方法對我來說很複雜,我創建了一個簡單的替代方案。

Private Sub CommandButton1_Click() 
Dim Left As Double, Top As Double 
With ActiveSheet 
Left = ActiveCell.Left 
Top = ActiveCell.Top 
ActiveSheet.Shapes.AddTextbox(msoTextOrientationUpward, Left, Top, 27, _ 
    190).Select 
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _ 
    "Titelname hier eingeben" 
End With 
End Sub 

所以我必須選擇一個單元格,然後點擊「添加」 - 按鈕。然後它在活動單元格的位置添加一個大小爲190x25的文本框。

+1

雖然這可能起作用,但它不是特別用戶友好,並且Martin Dreher建議的選項要好得多。 –