C# 调用与在Visual Basic中运行Sub的其他方法之间的区别

C# 调用与在Visual Basic中运行Sub的其他方法之间的区别,c#,vba,excel,C#,Vba,Excel,我一直遵循这一点在C#中创建excel加载项。此加载项为用户提供了一组函数,用户可以将这些函数写入公式栏 由于某些原因,本教程有效,并且在VBA编辑器运行时填充单元格 运行子系统(通过f5),或者单击绑定到VBA子系统的Excel表单按钮 但是,如果从函数(可在公式栏中使用)调用Sub,则c#代码中会出现错误(似乎是“发生了什么事”的错误),或者单元格未填充 Public Function methodCaller() Call CallVSTOMethod 'Call the sub

我一直遵循这一点在C#中创建excel加载项。此加载项为用户提供了一组函数,用户可以将这些函数写入公式栏

由于某些原因,本教程有效,并且在VBA编辑器运行时填充单元格 运行子系统(通过f5),或者单击绑定到VBA子系统的Excel表单按钮

但是,如果从函数(可在公式栏中使用)调用Sub,则c#代码中会出现错误(似乎是“发生了什么事”的错误),或者单元格未填充

Public Function methodCaller()
    Call CallVSTOMethod 'Call the sub
End Function
AFAIK
Call
没有做任何特殊的事情,它是VBA早期版本的遗留问题

我的问题是,如何以类似于编辑器/表单单击处理程序的方式从函数调用Sub

谢谢你抽出时间

编辑: 这是我从函数调用Sub时的错误


如果没有call关键字,我如何从函数中调用Sub
-删除
call
关键字。您是否有可能尝试更改工作表?答案出现在问题中的罕见情况之一。同样的错误也会发生,抱歉,我将回答我的问题是的,您正在尝试从工作表调用的函数更改工作表。请不要。确实看到了链接,但请不要这样做。我只能猜测,你需要向Excel开发人员咨询。计算周期是优化的,函数只有在参数改变时才会重新计算,因此Excel会跟踪依赖项。允许工作表函数更改工作表会以两种方式打破这一点-无法正确跟踪依赖项,因此计算树将崩溃,以及无限计算周期的可能性。