Не удается применить оператор "==" к операндам типа "string" и "int".
Батенька, вы же юзаете C#,
главная особенность C# это строгая типизация, т.е. никакого разврата с автоматическим приведением типов. Это позволяет избежать некоторых ошибок и повысить скорость работы программы.
На том клочке кода который вы приводите:
Я подразумеваю, что переменная
rng объявлена как
Object (т.к.
Variant в C# не существует). И потом вы пытаетесь выдавить с ней свойства
Value . А на основании чего компилятор должен понять, что в типе
Object такое свойство есть? Он и не понимает этого, то что VBA отскладывает процесс проверки свойств на этап выполнения, не значит что C# так будет делать. Поэтому самое рациональное это приведение типов, например:
If ((int)rng .Value == 75)
После этого компилятор C# должен "проглотить" эту строку, т.к. ответственность за значение лежит теперь на вас.
Есть еще один подход в C# для случаев взаимодействиями объектными моделями на базе IDispatch (VBA), это объявить переменную с ключевым словом
dynamic вместо
Object:
тогда компилятор будет молчать и проверять тип переменной во время выполнения программы, но это нужно юзать как крайний случай, потому как это дорожка скользкая.
P.S. так как причесанного примера тут не было, поэтому все здесь на уровне теории, но думаю что вы додумаете как атм у вас правильно, что и где приводить.