VBA - 将对象彼此相邻插入

时间:2016-08-15 00:10:29

标签: excel vba excel-vba object

我有一些VBA代码,这样当按下按钮时,用户可以从他们的计算机中选择一个文件,并将其作为一个看似图标的对象插入电子表格。

每次单击按钮时,代码都会计数,因此用户插入的每个新图标都显示在现有图标的右侧,即:

count = count + 1
ActiveSheet.Shapes("Object 1").IncrementLeft 90*count

现在,问题是,我不知道如何更改计数,以便每次用户从电子表格中删除对象时,计数会减少1(这样插入的下一个对象仍然会排成一行以及第一个对象右侧的适当间距。我会假设我会使用一个事件,但似乎不存在删除对象时的事件。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

由于嵌入文件是OLE对象,因此您不需要维护计数。您可以使用OLEObjects集合即时计算它。

如果还有其他ActiveX对象,那么您可能需要迭代并只计算xlOLEEmbed类型的项目。

Count = 0
For Each o In Sheet1.OLEObjects
    If o.OLEType = xlOLEEmbed Then Count = Count + 1
Next

答案 1 :(得分:-1)

你如何处理删除? 也许您可以提示用户事先按下按钮进行删除。 因此,用户按下按钮,您可以看到您引用的任何字段中有多少个对象,然后在每次用户启动时继续扫描。

无论哪种方式,每次用户发起某事时,您都必须有一些方法来跟踪。或者您可以通过选择进行跟踪; IE如果用户选择其中一个对象,请在用户执行每个操作后查看剩余的对象数。

据推测,他们只是选择它才能删除。