在 VBA 中创建形状时出错

在 VBA 中创建形状时出错

我正在尝试在单元格 A1 中指定的范围内创建形状。例如,如果单元格 A1 中的文本是,则宏使用以下代码"B5:D7"创建一个形状:B5:D7

Sub CreateShape()
    Dim myRng       As Range
    Dim sh          As Object
    Dim rngPath     As String

    rngPath = Range("A1").Value

    Set myRng = Range(rngPath)
    Set sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1)

    With sh
        .Left = myRng.Left
        .Top = myRng.Top
        .Width = myRng.Width
        .Height = myRng.Height
        .Fill.Visible = msoFalse
        .Line.ForeColor.RGB = RGB(0, 0, 0)
    End With

End Sub

但如果提供的是整行、整列或大范围,则会出现错误"B2:B1048576"。有人能帮我修改这段代码吗?

我已经尝试使用过ActiveWindow.VisibleRange.Height,但Worksheet.UsedRange.Height在两种情况下我都得到了一个较小的盒子,而且它不能代表完整的范围。

非常感谢。

答案1

错误可能出现在这一行:

.Height = myRng.Height

问题在于您尝试Height通过 VBA 设置超过最大值的属性值。

形状的HeightWidth属性的最大169056点数为;一个点等于1/72英寸,因此最大值约为 2348 英寸或 5965.23 厘米。

只要您提供的范围不超过该高度或宽度,代码就不会出错。一旦提供的范围更大,代码就会出错。

笔记:您可以手动拖动形状使其大于通过 VBA 设置属性的大小。但这样做不会增加“格式”选项卡 >“大小”下的尺寸!

相关内容