2016-08-15 70 views
0

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

的代码是这样的,每一个按钮被点击一次计数,因此受到用户的每件新图标显示在现有的权利,即:现在

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

,问题是,我不知道如何更改计数,以便每次用户从电子表格中删除一个对象时,计数将减少1(以便插入的下一个对象仍然在行中,并且适当的间距在第一个对象)。我会假设我会使用一个事件,但似乎没有一个事件,当一个对象被删除。

有什么建议吗?

回答

-1

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

无论哪种方式,你将不得不有一些方式跟踪每次用户启动的东西。或者你可以选择跟踪;如果用户选择其中一个对象,请在用户执行每个操作后查看剩余的对象数。

想必他们只是选择它才能删除。

+0

也试试这个http://www.tek-tips.com/viewthread.cfm?qid=1743784 – bdpolinsky

0

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

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

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