我创建了我的第一个 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” .
有谁知道无论用户从哪里开始他的选择,我怎样才能在用户的选择中读取我想要的特定列或单元格?
提前谢谢你
最佳答案
正如您所发现的,当您处理单元格选择时,左上角的单元格在处理该选择中的单元格引用时相当于 A1,其他单元格由它们所在的行和列引用偏移到左上角的单元格。
如果您希望在我被用户选择的行截断的列区域内搜索,那么我建议使用 _Application.Intersect method .
如果您希望在第 I 列的某个部分中进行搜索,即使没有交集,也可以使用选择的顶行和底行作为列 I 的边界,使用 selection.cells[1] 定义列 I 中的第一个单元格。行并通过 selection.rows.count 调整它的大小。
关于c# - 如何使用 C# 在 Excel 中获取用户选定范围内的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733181/