1

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

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

现在我只是在使用一个通用的 add 函数,并试图将它放在我想要的区域。但是,由于用户输入,整个页面会发生变化,因此根据他们的操作,我需要将它放在不同的位置。如果我将它绑定到特定范围,无论用户做什么,它都可能始终处于完美位置。

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

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
4

1 回答 1

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
于 2013-08-08T13:55:26.197 回答