我正在尝试在单元格 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 设置超过最大值的属性值。
形状的Height
和Width
属性的最大169056
点数为;一个点等于1/72英寸,因此最大值约为 2348 英寸或 5965.23 厘米。
只要您提供的范围不超过该高度或宽度,代码就不会出错。一旦提供的范围更大,代码就会出错。
笔记:您可以手动拖动形状使其大于通过 VBA 设置属性的大小。但这样做不会增加“格式”选项卡 >“大小”下的尺寸!