#excel #c#-3.0 #vsto
#excel #c #-3.0 #vsto
Вопрос:
Я работаю с VSTO. В этом есть ситуация, в которой при нажатии кнопки на листе Excel отобразится поле ввода, и я получу выбранный диапазон. Я хочу знать, как я могу получить выбранный диапазон из inputbox, используя адрес активной ячейки на листе 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?
Заранее спасибо
Ответ №1:
Вот как вы можете это сделать, используя 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: " amp; ActiveCell.Address
End If
End Sub
Ответ №2:
не очень эффективно, но должно сработать.
private bool IsActiveCellInRange(Range selectedRange)
{
foreach cell in selectedRange.Cells
if (cell == activeCell)
return true;
}
return false;
}
Ответ №3:
Не уверен, что правильно понял ваш вопрос, но поищите функцию CellInNamedrange здесь http://www.cpearson.com/excel/excelM.htm