You are using C# version 4, the synthetic get_Default() method is no longer generated. The WorkSheet interface now has a real indexer, you use it as you do in the rest of your code. Fix:
range = (Range)worksheet.Cells[num2 + 10, num];
I'll give a brief explanation of get_Default( ) COM Automation supports indexed properties and provides a more open conception of properties. Alternatively, properties that accept additional arguments. It also enables designating a property as an interface's default property. This has historically been a relatively severe requirement in the C# language. Although it does support a default property,, its name is fixed. the class's indexer. When the program is constructed, it is given the new name Item. And just one argument is allowed. With COM interop, where the default property might have any name and any number of arguments, this did not work out so well. This issue arises from the Range interface's Value default attribute, which accepts two arguments. They are optional as well, which was another feature that C# did not support.
C# version 4 greatly improved this, it now supports indexed properties as well. But only in the specific case of COM interop. If you look at the Range interface with Object Explorer you now see:
dynamic this[[object RowIndex = System.Type.Missing],
[object ColumnIndex = System.Type.Missing]]
{ set; get; }