【发布时间】:2014-09-24 10:16:55
【问题描述】:
我有一个不连续的范围,由三个区域组成。从右边的第一个区域开始,中间是第二个区域,最后一个区域是最左边的。
为了清楚起见,这是我的范围:
=Sheet1!$H$5:$H$6,Sheet1!$G$4:$G$7,Sheet1!$C$3:$F$8
我想在这个范围内的左上角放置一个形状。因此我尝试了以下代码。
Dim rngPos As Range
Set rngPos = Range("myRange")
ActiveSheet.Shapes.AddShape msoShapeRectangle, rngPos.Left, rngPos.Top, 20, 20
问题是形状总是放在完整范围的第一个区域。我尝试将适用于具有相同高度但不适用于上述范围的范围的范围“联合”。
Set rngPos = Union(Range("myRange"), Range("myRange"))
不幸的是,我不能总是将它放在最后一个区域,因为我的范围是从左到右而不是从右到左建立的。所以下面对我不起作用。
ActiveSheet.Shapes.AddShape msoShapeRectangle, rngPos.Areas(3).Left, rngPos.Top, 20, 20
我认为必须有一种方法可以将非连续范围内最左上角的单元格作为定位形状的参考,但我不知道该怎么做。也许甚至有完全不同的方法来解决这个问题。
【问题讨论】:
标签: excel position range shape vba