Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:有没有比这个更简洁的方法来修改工作簿中的值?_Excel_Vba - Fatal编程技术网

Excel VBA:有没有比这个更简洁的方法来修改工作簿中的值?

Excel VBA:有没有比这个更简洁的方法来修改工作簿中的值?,excel,vba,Excel,Vba,我将数值存储为工作簿名称。要修改内容,我目前正在这样做 Sub宏1() 将wb设置为工作簿:设置wb=ActiveWorkbook 尺寸s为字符串:s=“图纸行高度” 作为整数的Dim i Dim节点 nn=wb.Names.Item.Value i=Val(替换为(nn,=,)) i=i+1 wb.名称.项目.删除 Set node=wb.Names.Add(Name:=s,referesto:=i) 端接头 我举个例子,有没有更简洁的方法?对我来说,似乎有很多不必要的步骤?我试图修改值,但

我将数值存储为
工作簿名称
。要修改内容,我目前正在这样做

Sub宏1()
将wb设置为工作簿:设置wb=ActiveWorkbook
尺寸s为字符串:s=“图纸行高度”
作为整数的Dim i
Dim节点
nn=wb.Names.Item.Value
i=Val(替换为(nn,=,))
i=i+1
wb.名称.项目.删除
Set node=wb.Names.Add(Name:=s,referesto:=i)
端接头

我举个例子,有没有更简洁的方法?对我来说,似乎有很多不必要的步骤?我试图修改
,但没有成功,因此我按照上面的示例进行了修改

您只通过其
属性获得了不引用单元格的名称值,您必须删除
=
,并且在编写它时必须添加它

但是,您可以稍微简化代码,不需要删除重新创建名称对象。另外,作为旁注,不需要写
名称。项
,您可以使用
名称
,因为
-集合是所谓的默认属性

如果您确定名称存在并且具有数值,则可以使用如下内容:

Dim n As Name
Set n = wb.Names(s)
n.Value = "=" & Val(Mid(n.Value, 2)) + 1

仅通过单元格的
value
属性获取不引用单元格的名称的值,并且必须删除
=
,写入时必须添加该值

但是,您可以稍微简化代码,不需要删除重新创建名称对象。另外,作为旁注,不需要写
名称。项
,您可以使用
名称
,因为
-集合是所谓的默认属性

如果您确定名称存在并且具有数值,则可以使用如下内容:

Dim n As Name
Set n = wb.Names(s)
n.Value = "=" & Val(Mid(n.Value, 2)) + 1

非常感谢。我将第三行改为
n.Value=1+Val(替换为(n.Value,“=”,”)
。那也行,谢谢。我将第三行改为
n.Value=1+Val(替换为(n.Value,“=”,”)
。这也起了作用。