2012-02-02 6 views
1

Я только начиная с Excel 2010 надстройки с VSTO и быстро тупик исключение порожденного этим кодом:C# Excel надстройки за исключением, когда выбрана строка формул и доступ к Range.Value

public void DoIt() 
{ 
     Excel.Range selectedRange = Application.Selection as Excel.Range; 
     if (selectedRange == null) 
     { 
      System.Windows.Forms.MessageBox.Show("Nothing selected"); 
     } 
     else if(selectedRange.Cells.Count > 0) 
     { 
      selectedRange[1, 1].Value = "=2+3"; // exception on this line. 
      selectedRange[selectedRange.Rows.Count, selectedRange.Columns.Count].Value = "Birthday"; 
     } 
} 

Исключение можно воспроизвести, сначала щелкнув по одной ячейке на листе, затем щелкните панель формул, а затем запустите указанную выше функцию (я вызываю ее с помощью кнопки ленты).

Может ли кто-нибудь сообщить, что происходит и как справиться с этим исключением? Спасибо вам.

+0

Какое исключение? какая линия бросает его? –

+0

Я не знаю .. вот что я прошу ... «Исключение из HRESULT: 0x800A03EC» – Jake

+0

возможно: http://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-worksheet-range –

ответ

2

Исключение состоит в том, что вы не можете запускать код в режиме редактирования формул. Вы также не можете сделать немало других вещей. Например, нажмите на панель формул и нажмите Ctrl-N, которая обычно открывает новую книгу. Ничего не произошло.

Я думаю, вам нужно просто выхватить исключение и выйти из Sub, который будет имитировать нормальную работу Excel.

В идеале вы хотите отключить кнопку, как и большинство кнопок ленты Excel, когда они находятся в режиме редактирования формул. Я не знаю, возможно ли это.

+0

Непознанное. Благодаря! – Jake