Excel:通过宏定位文本框

时间:2016-11-24 12:15:23

标签: excel vba excel-vba macros

我的Excel文件中有一个命令按钮,它在特定位置添加了一个新文本框。现在我遇到了问题。我想在前一个文本框下自动添加文本框。就像我的截图一样。我手动创建了“Testeintrag”,当我点击顶部的+时,会创建“Titelname hier eingeben”。我用

手动放置了这个盒子
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

2 个答案:

答案 0 :(得分: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 :(得分: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

所以我必须选择一个单元格然后点击“添加”-Button。然后,它会在活动单元格所在的位置添加一个大小为190x25的文本框。