2016-11-24 78 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建议的选项要好得多。 –