0

我一直在研究 ExcelDNA/C# 插件有一段时间了,我正面临最后的障碍。

我可以得到一个选择地址,我首先需要检查该选择中的行是否只是两个,例如在 Excel 中它们将是 8+9、彼此相邻的两行或任何两个连续的数字。

然后我需要检查是否有两个以上的列,等等 C 到 J(字母表中的两个以上空格)。

这一切都需要通过这样的字符串来完成:Sheet1!$C$8:$J$9

我正在尝试做的是将这样的选择拆分为两个字符串,它返回上面的字符串,在示例的情况下,所需的最终结果将是

Sheet1!$C$8:$J$8 + Sheet1!$C$9:$J$9在两个不同的字符串中,也许我需要更多的咖啡,但如果有人有比我计划的更垃圾的方法,我会永远在你的债!

4

2 回答 2

0

你有对Range对象的引用吗?如果是这样,range.Rows.Count == 2将告诉您是否有两行,并range.Columns.Count > 2告诉您是否有两列以上。

然后,要独立获取两行的地址,您可以执行以下操作:-

var address1 = range.Rows[1].Address(external:true);
var address2 = range.Rows[2].Address(external:true);
于 2011-11-11T10:09:35.517 回答
0

我认为这是从 CommandBar 或 Ribbon 事件处理程序调用的宏运行的。在这种情况下,您不妨从一开始就使用 COM 自动化接口,而永远不要打扰 C API(XlCall 和 ExcelReference)。

要获得当前选择,您只需说

Application xlApp = (Application)ExcelDnaUtil.Application;
Range selectedRange = xlApp.Selection as Range;
if (selectedRange != null)
{ .... do you further checking here ...}

如果您正在制作用户定义的函数或者您想要高性能的数据传输,那么 C API 的东西就更重要了。但是对于常规宏,COM API 更容易。

于 2011-11-11T16:46:28.080 回答