2016-04-12 19 views
0

kopieren habe ich ein Blatt mit einer marco (von Excel VBA):Wie kann ich ein Blatt mit vba über Makro

Rem Attribute VBA_ModuleType=VBADocumentModule 
Option VBASupport 1 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) 
... 
End Sub 

Es kann richtig arbeiten.

Aber nachdem ich das Blatt auf ein neues Blatt kopiert habe, verliert das neue Blatt das Makro.

Also versuche ich ein Sheet Event von Double Click, und schreibe einen marco, um das Blatt und Ereignis zu kopieren.

Es ist Ok, aber Sheet Event hat keine "Cancel" Parameter, die mein Makro brauchen.

Wie kann ich das Blatt mit VBA kopieren?

Antwort

0

Scheinbar Blatt Ereignisse nehmen keine Parameter. Ich habe mit der rechten Maustaste auf die Registerkarte Sheet 1 geklickt, Sheet Events ausgewählt und dem Double Click-Ereignis Worksheet_BeforeDoubleClick zugewiesen. Dann führte das Doppelklicken zu der folgenden Fehlermeldung:

Ein Scripting Framework-Fehler trat bei dem Ausführen des Basic-Skripts Standard.Module2.Worksheet_BeforeDoubleClick auf.

Meldung: falsche Anzahl der Parameter!

Wenn wir stattdessen Zuweisen zu einem Makro, das keine Argumente nimmt:

Sub DoDoubleClick 
    MsgBox "Double clicked" 
End Sub 

Dann Doppelklick erzeugt das gewünschte Ergebnis. Auch Ihr CopySheetWithEvents() wird ein neues Blatt erstellen und das Ereignis dem neuen Blatt korrekt zuweisen.

Also, ich denke, Sie müssen Worksheet_BeforeDoubleClick umschreiben, so dass es keine Argumente benötigt. Um den Bereich zu erhalten, lesen Sie die aktuelle Auswahl:

oSelect = ThisComponent.CurrentSelection.getRangeAddress 
Verwandte Themen