Получить активную ячейку доступно в выбранном диапазоне в Excel? - PullRequest
3 голосов
/ 07 сентября 2010

Я работаю с ВСТО. В этом случае возникает ситуация, когда при нажатии кнопки на листе Excel будет отображаться поле ввода, и я получу выбранный диапазон. Я хочу знать, как я могу получить выбранный диапазон из поля ввода hac адрес активной ячейки листа Excel.

object objInputBox= Excel.Application.InputBox(prompt, field, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, 8);
ExcelXP.Range selectedRange = objInputBox as Excel.Range;

string rangeName = selectedRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing); 

string activeCell =Application.Application.ActiveCell.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);

Как получить адрес активной ячейки в rangeName?

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 14 сентября 2010

Вот как вы можете это сделать, используя Application.Intersect. Примером является VBA, но его можно легко перенести на C #.

Sub TestinRange()
    Dim inputRange As Range
    Set inputRange = Worksheets(1).Range("B1:B5")
    Dim IsActiveCellInInputRange As Range
    Set IsActiveCellInInputRange = Application.Intersect(inputRange, ActiveCell)
    If IsActiveCellInInputRange Is Nothing Then
        Debug.Print "Nope, the ActiveCell is not within the Input Range"
    Else
        Debug.Print "Yep, the ActiveCell is within the Input Range. ActiveCell Address: " & ActiveCell.Address
    End If
End Sub
1 голос
/ 10 сентября 2010

Не уверен, что я правильно понял ваш вопрос, но ищите здесь функцию CellInNamedrange http://www.cpearson.com/excel/excelM.htm

1 голос
/ 10 сентября 2010

не очень эффективно, но должно работать.

private bool IsActiveCellInRange(Range selectedRange)
{
  foreach cell in selectedRange.Cells
    if (cell == activeCell)
      return true;
  }
  return false;
}
...