我正在与VSTO合作。在这里有一个asituation,其中在Excel工作表的按钮单击它将显示输入框,我将获得所选范围。我想知道如何从输入框中获取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中的活动单元格地址?
提前致谢
答案 0 :(得分:3)
使用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 :(得分:1)
效率不高但应该有效。
private bool IsActiveCellInRange(Range selectedRange)
{
foreach cell in selectedRange.Cells
if (cell == activeCell)
return true;
}
return false;
}
答案 2 :(得分:1)
不确定我的问题是否正确,但请在此处查找CellInNamedrange函数 http://www.cpearson.com/excel/excelM.htm