首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >已按C#中的名称引用更新了Excel单元格值

已按C#中的名称引用更新了Excel单元格值
EN

Stack Overflow用户
提问于 2011-09-08 09:18:34
回答 3查看 3.7K关注 0票数 3

我在excel中有一个命名的单元格,假设它在C#中叫做"myCell“,我希望能够访问这个单元格并更新它的值。我试过了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";

但这会引发COM异常,并显示消息“exception from HRESULT: 0x800A03EC”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-08 10:21:15

你的问题是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Globals.ThisAddIn.Application.Names.Item(@"myCell")

不返回可为其设置值的范围,而是返回名称类型的对象。您可以使用RefersToRange属性获取表示要查找的单元格的范围,然后设置此对象的值。这一切都可以转化为这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
票数 2
EN

Stack Overflow用户

发布于 2011-09-08 09:47:34

只需使用Range对象。命名的单元格是一个命名的Range,所以这应该是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";

P.D.我无法检查这一点,我不确定您是否可以将值直接赋给Range对象,或者您是否需要指定Range中单元格的偏移量(因为它可以包含许多单元格)。

您也可以尝试:(我不记得命名范围是否直接与单元格一起使用)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
票数 1
EN

Stack Overflow用户

发布于 2014-11-18 10:24:39

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myWorksheet.Cells.SetValue("defined_name", "hello");

在最后一种情况下,尝试为不存在的名称设置值时会出现"Exception from HRESULT: 0x800A03EC“。

如果检查null不起作用,请检查this answer以查看错误的int值列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7345782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文