我试图从VSTO Addin for Office开始,我翻译了微软在他们网站上发布的一个例子。但当我实现WorkbookBeforeSave
事件时,我总是收到这个错误:
Method 'Application_WorkbookBeforeSave' cannot handle event 'WorkbookBeforeSave' because they do not have a compatible signature
我在谷歌上搜索,看起来签名是可以的。我在C#中尝试了这个例子,效果很好。
这是我的代码:
Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Excel
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
AddHandler Application.WorkbookBeforeSave, New Excel.AppEvents_WorkbookBeforeSaveEventHandler(AddressOf Application_WorkbookBeforeSave)
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave(
Dim activeworksheet As Worksheet = Application.ActiveSheet
Dim firstRow As Range = activeworksheet.get_range("A1")
firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown)
Dim newFirstRow As Range = activeworksheet.get_tange("A1")
newFirstRow.Value2 = "This text was added by using code"
End Sub
End Class
错误是具有";(AddressOf Application_WorkbookBeforeSave(";有人能帮我吗?感谢
我发现了问题,这是我的错误。错误在声明中:
Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave
参数Cancel as Boolean
应为By Ref Cancel as Boolean