如何使用 C# 在 Excel 中的用户选定范围内获取特定单元格
How to get a specific cell in a user selected range in Excel using C#
我创建了我的第一个 Excel 加载项,并希望在用户 select.
范围内找到特定的单元格
我知道我需要哪些列的值。所以我测试它:
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"
列的第一个值
当用户创建的 "selection" 从第 "A"
列开始时,这工作正常
如果用户 select 例如从 C2 到 H20 代码找不到列 "I"
我变成了其他范围,而不是 "I" 列。
我认为对他来说 "I" 总是“9”。
当用户 select 从 "C2" 到 "H20" 在新范围内是 colum "C" = "0" 和 column "L" = 9 所以代码 select列"L"即使我在代码中写"I"。
有谁知道如何读取用户 selection 中我想要的特定列或单元格,无论用户从哪里开始他的 selection?
提前致谢
正如您所发现的,当您处理选定的单元格时,左上角的单元格在处理选定范围内的单元格引用时相当于 A1,其他单元格由行和列引用它们偏移到左上角的单元格。
如果您希望在我被用户选择的行截断的列区域内搜索,那么我建议 _Application.Intersect method.
如果您希望在第 I 列的某个部分中搜索并将选择的顶行和底行作为列 I 的边界,即使没有交集,请使用 selection.cells 定义列 I 中的第一个单元格[1].row 并按 selection.rows.count.
调整大小
我创建了我的第一个 Excel 加载项,并希望在用户 select.
范围内找到特定的单元格我知道我需要哪些列的值。所以我测试它:
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"
列的第一个值当用户创建的 "selection" 从第 "A"
列开始时,这工作正常如果用户 select 例如从 C2 到 H20 代码找不到列 "I" 我变成了其他范围,而不是 "I" 列。
我认为对他来说 "I" 总是“9”。 当用户 select 从 "C2" 到 "H20" 在新范围内是 colum "C" = "0" 和 column "L" = 9 所以代码 select列"L"即使我在代码中写"I"。
有谁知道如何读取用户 selection 中我想要的特定列或单元格,无论用户从哪里开始他的 selection?
提前致谢
正如您所发现的,当您处理选定的单元格时,左上角的单元格在处理选定范围内的单元格引用时相当于 A1,其他单元格由行和列引用它们偏移到左上角的单元格。
如果您希望在我被用户选择的行截断的列区域内搜索,那么我建议 _Application.Intersect method.
如果您希望在第 I 列的某个部分中搜索并将选择的顶行和底行作为列 I 的边界,即使没有交集,请使用 selection.cells 定义列 I 中的第一个单元格[1].row 并按 selection.rows.count.
调整大小