【发布时间】:2013-04-16 13:49:46
【问题描述】:
我正在尝试在特定单元格位置添加形状,但由于某种原因无法在所需位置添加形状。下面是我用来添加形状的代码:
Cells(milestonerow, enddatecellmatch.Column).Activate
Dim cellleft As Single
Dim celltop As Single
Dim cellwidth As Single
Dim cellheight As Single
cellleft = Selection.Left
celltop = Selection.Top
ActiveSheet.Shapes.AddShape(msoShapeOval, cellleft, celltop, 4, 10).Select
我使用变量来捕获左侧和顶部位置,以检查在我的代码中设置的值与我在录制宏时在活动位置手动添加形状时看到的值。当我运行我的代码时,cellleft = 414.75 和 celltop = 51,但是当我在录制宏时手动将形状添加到活动单元格位置时,cellleft = 318.75 和 celltop = 38.25。我已经对此进行了一段时间的故障排除,并且在网上查看了很多关于添加形状的现有问题,但我无法弄清楚这一点。任何帮助将不胜感激。
【问题讨论】:
-
上面的代码对我来说完全没问题。
-
.Activate在第一行并不一定意味着它等于选择然后......你需要检查它。或者直接在第一行将.Activate更改为.Select。 -
我也有同样的问题。 .Cell.Left 和形状的真实位置之间有一点区别。此“错误”仅出现在 excel 2007 上。在 excel 2003 上,vba 代码运行良好。 2010年我不知道。我尝试了 Debug.Print 但我没有看到任何效果。
-
您是否使用了不同于 100% 的缩放比例?我发现使用缩放时形状位置存在绘图错误。 (在 excel 2016 上测试)