マルコのシートがあります(Excel 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
大丈夫ですが、シート イベントには、マクロが必要とする「キャンセル」パラメータがありません。
vbaでシートをコピーするにはどうすればよいですか?