2016-08-15 4 views
0

Ich habe einige VBA-Code, so dass der Benutzer, wenn eine Schaltfläche gedrückt wird, eine Datei von ihrem Computer auswählen und als ein Objekt, das wie ein Symbol in der Tabelle aussieht, einfügen kann.VBA - Objekte nebeneinander einfügen

Der Code ist so, dass es jedes Mal zählt die Schaltfläche geklickt wird, so dass jedes neue Symbol durch den Benutzer eingefügt wird rechts von der bestehenden, dh:

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

Nun, das Problem ist, Ich weiß nicht, wie man die Anzahl ändert, so dass jedes Mal, wenn ein Benutzer ein Objekt aus dem Arbeitsblatt löscht, der Zählerstand um 1 abnimmt (so dass das nächste eingefügte Objekt immer noch in einer Linie und der entsprechende Abstand rechts von der erstes Objekt). Ich würde annehmen, dass ich ein Ereignis verwenden würde, aber es scheint kein Ereignis zu geben, wenn ein Objekt gelöscht wird.

Irgendwelche Ratschläge?

Antwort

-1

Wie gehen Sie mit den Löschvorgängen um? Vielleicht können Sie den Benutzer auffordern, eine Taste zu drücken, um vorher zu löschen. So drückt der Benutzer eine Schaltfläche, Sie sehen, wie viele Objekte in welchem ​​Feld Sie referenzieren, und dann weiter scannen jedes Mal, wenn der Benutzer etwas initiiert.

In jedem Fall müssen Sie eine Möglichkeit haben, jedes Mal zu verfolgen, wenn der Benutzer etwas initiiert. Oder Sie können durch Auswahl verfolgen; IE wenn Benutzer eines der Objekte auswählt, sehen Sie, wie viele Objekte nach jeder vom Benutzer durchgeführten Aktion verbleiben.

Vermutlich werden sie nur ausgewählt, um zu löschen.

+0

versuchen Sie auch diese http://www.tek-tips.com/viewthread.cfm?qid=1743784 – bdpolinsky

0

Da es sich bei den eingebetteten Dateien um OLE-Objekte handelt, ist keine Zählung erforderlich. Sie können es einfach mithilfe der OLEObjects-Auflistung im Handumdrehen berechnen.

Wenn andere ActiveX-Objekte vorhanden sind, müssen Sie möglicherweise die Elemente vom Typ xlOLEEmbed durchlaufen und zählen.

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