2015-04-10 2 views
0

Я разрабатываю надстройку Excel (уровень приложения) с VSTO 2013 с использованием VB.NET.Захват выбора текущей выделенной ячейки

Я использую хороший проект, который эмулирует Excel's "refEdit" control. С помощью этого элемента управления пользователь может выбрать диапазон из рабочего листа через событие SelectionChanged.

Моя проблема: если пользователь выбирает одну ячейку, а затем он запускает элемент управления refEdit (который минимизирует форму), чтобы выбрать ячейку, он не может выбрать выбранную ячейку, только потому, что она не запустите событие SelectionChanged. Для этого он должен выбрать другую ячейку (а затем refEdit будет заполнен в первый раз, с новым адресом выбора), а затем выберите ранее выбранную ячейку, чтобы, наконец, получить свой адрес в элементе управления.

Я не нашел отличного обходного пути, только такие вещи, как выбор другой ячейки. Если бы у меня было что-то вроде «Clear.Selection», это было бы прекрасно, но я думаю, что этого не существует, правильно?

Любое умное решение?

ответ

0

Если возможно, желательно писать код, который запускается, когда refEdit начинает делать все, что вам нужно, не полагаясь на событие SelectionChange.

Листовые события не подвергаются очевидным образом, но вы можете использовать следующий код, чтобы вызвать событие:

Run "Sheet1.Worksheet_SelectionChange", Selection 

Selection обеспечивается как целевой аргумент для события.


Selection не может быть Range, хотя, так что вы должны рассмотреть вопрос о включении:

If TypeName(Selection) = "Range" Then 
+0

Хорошо, я могу запустить эту команду Run, если я захвачу пользователь щелкните в выбранной ячейке, не так ли? Но как я могу захватить это событие, чтобы заставить SelectionChange? Я все еще поразил этот вопрос ... –

+0

Я не совсем понимаю, о чем вы спрашиваете. Если вы запустите мой код, как только отобразится форма, или будет нажата кнопка refEdit, тогда он запустит событие SelectionChange, что вы запросили? –

+0

Нет, поскольку это приведет к выбору выбранной ячейки. Я хочу: пользователь может щелкнуть в текущей выбранной ячейке ПОСЛЕ того, как форма открыта, и это действие заполняет текстовое поле ref ref. Проблема в том, что событие, которое запускает заполнение ящика, это «изменение выбора» ... Итак, если он нажимает на любую ячейку после того, как форма открыта, она заполняет поле правильно, за исключением ячейки, которая была выбрана, когда форма был открыт. Если я сделаю то, что вы предлагаете, я заставлю выбор пользователя выбранной ячейке, но я хочу, чтобы пользователь сделал этот выбор в следующем клике ... –

Смежные вопросы