2010-09-07 110 views
3

我在VSTO工作。在这里有一个asposeation,在按钮点击Excel工作表时,它会显示输入框,我会得到选定的范围。我想知道如何从inputbox获取所选范围hac 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中的活动单元格地址?

在此先感谢

回答

3

的CellInNamedrange功能这里是你能做到这一点,利用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

效率不高,但它应该工作。

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