を経由してVBAでシートをコピーすることができ、私は(エクセルVBAから)マルコのシートを持っている:はどのように私はマクロ
Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
...
End Sub
それが正しく動作することができます。
しかし、シートを新しいシートにコピーすると、新しいシートにマクロが失われます。
私はダブルクリックのシートイベントを書き、シートとイベントをコピーするマルコを書きます。
Sub CopySheetWithEvents()
oSheets = ThisComponent.Sheets
oSheet = ThisComponent.CurrentController.ActiveSheet
sName = oSheet.Name
sNewName = oSheets.Count + 1
oSheets.CopyByName(sName, sNewName, oSheets.Count + 1)
oNewSheet = oSheets(oSheets.Count - 1)
aSheetEvents = oSheet.Events
sEventNames = aSheetEvents.ElementNames
aNewSheetEvents = oNewSheet.Events
For i = 0 To ubound(aSheetEvents.ElementNames)
aEvent = aSheetEvents.getbyname(sEventNames(i))
aNewSheetEvents.ReplaceByName(sEventNames(i), aEvent)
Next i
End Sub
それはOKですが、シートのイベントは、私のマクロの必要性「キャンセル」パラメータを持っていません。
vbaでシートをコピーするにはどうすればよいですか?