У меня есть лист с Марко (из Excel 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
Это нормально, но у листа Event нет параметра «Отмена», который нужен моему макросу.
Как скопировать лист с помощью vba?