В VBA есть элемент управления RefEdit, который позволяет вам сделать это, и есть подробное пошаговое руководство по его использованию здесь: Как использовать элемент управления RefEdit с пользовательской формой .
К сожалению, в C # нет встроенного элемента управления, который бы позволял вам делать это. Вы можете использовать VBA в качестве внешнего интерфейса - я очень сомневаюсь, что вы захотите это сделать - или вы можете создать эквивалентный элемент управления RefEdit, используя C #. Вот статья о том, как это сделать, а также полнофункциональный пример кода C # здесь: Как кодировать элемент управления RefEdit , автор Gabhan Berry.
Обновление на основе комментария zzandy:
"На самом деле вопрос в том, как
выделить выбранные диапазоны, а не о том, как
выбрать диапазон. Блок ввода
(csharp-examples.net/inputbox)
доступно из C # и позволяет выбрать
диапазоны ".
Получение диапазонов для выделения в нескольких цветах будет невозможно. Такая подсветка происходит только в Excel при создании формул на листе, а не при выборе диапазонов для каких-либо других целей. Единственный способ создания, который потребовал бы героического количества подклассов или перехвата, и я бы не рекомендовал его.
Некоторые решения, однако, позволят вам, по крайней мере, иметь выделенную полосу вокруг выделения (она же «походные муравьи»). Если вы используете VBA в качестве внешнего интерфейса, вы можете использовать встроенный элемент управления RefEdit , о котором я упоминал выше, который помещает полосу выделения вокруг выбранного диапазона.
Пример C #, который я привел выше , позволит вам использовать элемент управления, похожий на RefEdit, в форме C #, но он не будет включать полосу выделения при выборе - он просто будет использовать стандарт посмотрите, когда диапазон обычно выбран.
Если вы хотите использовать простое решение для ввода, вместо элемента управления в форме, тогда приведенный вами пример C # будет работать (если вы используете Form.Show (), но не Form.ShowDialog ()), но он не будет показывать какую-либо специальную полосу выделения или другую подсветку. Для простого поля ввода, в котором использует выбор полосы выделения, вы можете использовать метод Excel.Application.InputBox , передав значение '8' для 'Типа' Это означает, что значение, возвращаемое методом InputBox, должно иметь тип данных «Excel.Range»:
Excel.Application excelApp = ...;
string prompt = "Please select the range.";
string title = "Input Range";
int returnDataType = 8;
String DefaultRange = oXL.Selection.Address();
Excel.Range myRange = excelApp.InputBox(
prompt,
title,
DefaultRange,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
returnDataType)
Надеюсь, это поможет ...
Mike