如何在excel中创建填充特定范围的文本框?

时间:2013-08-07 20:17:01

标签: excel vba excel-vba excel-2010 excel-2013

使用vba,我希望能够添加它并使其位于特定范围内,例如A2:H8。这可能吗?

我知道我可以选择合并一堆单元格并制作一个文本框,但是我希望用户可以更容易地移动,如果他们愿意的话。

现在我只是使用一个通用的添加功能,并试图在我想要的区域内获取它。但是,整个页面会因用户输入而发生变化,因此根据他们的工作情况,我需要将其放在不同的位置。如果我将它绑定到特定范围,无论用户做什么,它总是在完美的位置。

这是我目前的小代码片段:

Sub Macro1()

    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 153.75, 88.5, 509.25, 272.25).Select

    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "hello hello hello" & Chr(13) & "" & Chr(13) & "hello" & Chr(13) & "hi" & Chr(13) & "" & Chr(13) & "hello"

    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 18).ParagraphFormat.FirstLineIndent = 0
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 18).Font
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1
        .Fill.ForeColor.TintAndShade = 0
        .Fill.ForeColor.Brightness = 0
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters(19, 1).ParagraphFormat.FirstLineIndent = 0
End Sub

1 个答案:

答案 0 :(得分:1)

考虑一下:

Sub CoverRange()
    Dim r As Range
    Dim L As Long, T As Long, W As Long, H As Long
    Set r = Range("A2:H8")
    L = r.Left
    T = r.Top
    W = r.Width
    H = r.Height
    With ActiveSheet.Shapes
        .AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
    End With
End Sub