对于非形状对象和形状对象,VBA Excel形状ID分配是不同的

时间:2017-11-17 23:18:25

标签: arrays excel vba excel-vba

我已经在这个VBA编程任务上工作了两个星期了。我学到了很多东西。我不认为有必要告诉您应用程序是什么,但如果您有点好奇,请查看以下链接(尤其是第一个):

VBA Class Object and Events ShapeRange Objects are acting weirdly

情况:

第一部分) 在Excel中创建对象时,它会为每个对象分配唯一的ID。假设您创建了10个形状,那么如果您查找ShapeRange数组,您将看到ID范围从2到11.它是直接的。如果删除最后一个形状(第10个形状),则ShapeRange数组的大小将从10更改为9,并且正在删除与ID = 11关联的形状。如果您创建一个新形状,它将是数组中的第10个形状,但分配的ID将是12而不是11。

第二部分) 创建和删除形状后,我添加了三个按钮。然后,我添加了更多的形状。最后,当我打印ShapeRange数组的内容时,我意识到当你添加一个像形状按钮这样的非形状对象时(在这种情况下它是真的),分配的ID不会跟随前一个趋势。我希望按钮具有以下ID:12,13和14(假设我之前创建了10个形状)。见下图:

A screenshot of my ShapeRange Array content

(第93-96行是形状,后跟3个按钮类型对象,然后第100行是形状)

这是我自己的项目,你看到这三个按钮有很多ID。没关系,但是当我创建另一个形状时,形状ID跟随按钮ID。

问题:

  1. 我在第一部分中所说的是正确的吗?如果是,请继续下一个问题。
  2. 我对第二部分很好,但是如果我能够拥有所有对象(无论他们的形状或按钮是否符合趋势),那么它会很整洁从2到n)。有没有办法做到这一点?如果没有,那很好。在我的情况下,按钮可以有自己的ID范围从23554开始,但是我最困扰的是我在最后添加的形状(图片中的第100行)。我希望将来添加的特定形状或形状具有ID 113,114,115等。我可以强制Excel执行此操作吗?
  3. 感谢您耐心等待并阅读整件事。 :)

0 个答案:

没有答案