如何使用C#在Excel中的用户选定范围内获取特定单元格

时间:2015-04-19 17:17:13

标签: c# excel range excel-interop excel-addins

我创建了我的frist Excel加载项,想要在用户选择的范围内找到特定的单元格。

我知道我需要的值的列。所以我测试它:

Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;
Excel.Range firstValue = selection.Columns["I"].Find("*", Type.Missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,Excel.XlSearchOrder.xlByColumns,Excel.XlSearchDirection.xlNext, false, Type.Missing,Type.Missing);

现在我有了“I”列的第一个值

当用户在“A”列中开始“选择”

时,这种方法很有效

如果用户选择从C2到H20的抽样,则代码无法找到列“I” 我变得比其他范围,而不是“我”列。

我觉得对他来说“我”总是“9”。 当用户在新范围中选择“C2”到“H20”时,列“C”=“0”且列“L”= 9,因此代码选择列“L”即使我在代码中写入“I”

有谁知道,无论用户选择了哪个位置,我如何阅读用户选择的特定列或单元格?

提前谢谢

1 个答案:

答案 0 :(得分:0)

正如您所发现的,当您处理选定的单元格时,左上角的单元格在处理该选择中的单元格引用时变为等效于A1,而其他单元格则由行和列引用偏移到左上角的单元格。

如果您希望在用户选择行截断的列I区域内进行搜索,那么我建议使用_Application.Intersect method

如果您希望在列I的一部分中搜索选择顶部和底部行作为列I的边界,即使没有交集,也可以使用selection.cells [1]定义第一列中的第一个单元格。行并通过selection.rows.count调整大小。