2016-08-15 68 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