Я написал расширение dll в C#, которое я вызываю в коде VBA. Поскольку код в DLL несколько сложнее, я решил разделить функциональность на несколько классов. Это означает, что главная точка входа в мою DLL по-прежнему является основным методом, но там я могу вызывать другие классы и методы.
Все это работало нормально до сегодняшнего дня. Я немного изменил подпись одного метода, потому что мне нужна еще одна переменная, полученная из Excel VBA, и внезапно я больше не мог вызвать метод, и это вызвало следующее исключение:
Неверное количество аргументов или недопустимое присвоение свойств
Код в VBA, из которого я вызываю DLL, выглядит следующим образом (переменная orig_value
- это та, которую я добавил)
Public Sub Worksheet_Change(ByVal Target As Range)
If TlbMain Is Nothing Then
Set TlbMain = New EstimationTypeLibrary.Main
End If
Call TlbMain.EstimationSheetChanged(ActiveWorkbook, Target, orig_value)
End Sub
Код в C# DLL, которую я вызываю из VBA, выглядит следующим образом (переменная originalValue
- это та, которую я добавил)
public void EstimationSheetChanged(Workbook activeWorkbook, Range range, string originalValue)
{
PublicEstimationSheetProperties.OriginalValue = originalValue;
EstimationOnChange.EstimationSheetChanged(activeWorkbook, range);
}