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
重命名Excel工作表会产生错误_Excel_Vba - Fatal编程技术网

重命名Excel工作表会产生错误

重命名Excel工作表会产生错误,excel,vba,Excel,Vba,我正在尝试使用VBA将excel工作表重命名为该工作表上单元格的内容 我创建了一个名为Rename_Sheets的单独模块,各种在线帖子建议使用以下代码: Sheets(3).Name = Sheet3.Range("A5") 或其非常类似的变体 使用debug.print,上述代码的两部分都返回预期结果,即工作表名称和单元格文本。 当我按照引用的方式运行代码时,我得到消息“应用程序定义或对象定义错误”。 我不明白为什么我会收到错误信息。你有打字错误 替换 Sheet3.Range("A5"

我正在尝试使用VBA将excel工作表重命名为该工作表上单元格的内容

我创建了一个名为Rename_Sheets的单独模块,各种在线帖子建议使用以下代码:

Sheets(3).Name = Sheet3.Range("A5")
或其非常类似的变体

使用debug.print,上述代码的两部分都返回预期结果,即工作表名称和单元格文本。 当我按照引用的方式运行代码时,我得到消息“应用程序定义或对象定义错误”。 我不明白为什么我会收到错误信息。

你有打字错误

替换

 Sheet3.Range("A5") 

祝你好运

Sheet3.Range(“A5”)
返回一个Range对象。您需要的是返回的范围对象的Value属性:

Sheets(3).Name = Sheet3.Range("A5").Value

但是请注意,一旦代码运行一次并重命名Sheet3,它将再次开始抛出错误,因为“Sheet3”将不存在。如果您使其
第(3)页.Range(“A5”).Value
类似于等号的另一侧,则此代码将不止一次起作用。

您没有给我们任何可以继续的东西。
Sheet3.Range(“A5”)
的值是多少?我使用的电子表格是一个模板,要求用户输入包括月份名称在内的数据。该数据输入到工作表3的单元格A5中,我想重命名该工作表以显示月份名称。使用此模板创建新电子表格时,此过程仅运行一次。我已将代码更改为读取Sheets(3)。Name=Sheets(3)。Range(“A5”)。值,如建议的,但仍会收到相同的错误消息。使用debug.print,第一个表达式返回“购买1”(模板中给出的名称),第二个表达式在用户输入后返回“十月购买”。@PwB I无法重新创建您正在经历的内容。除了我的答案中的一行之外,还有其他代码吗?错误可能来自另一行代码或电子表格的设置。打开一个全新的excel文件,打开VBA编辑器,在Sub()中只输入一行代码,然后在第3页的A5中写上“Hello World”,看看错误是否仍然存在。在新工作簿中,只有一行的Sub(在“ThisWorkbook”下)可以正常工作。当我在同一位置将该子对象复制到模板中时,错误会再次出现。如果A5为空,我会得到“应用程序定义[…]”错误,但是如果A5有值时出现错误,可以尝试:(1)重写
工作表(3).范围(“A5”)
工作表(3).单元格(5,1)
|(2)而不是让代码在工作簿中移动到没有其他代码的模块中|(3)如果所有其他操作都失败,并且工作簿足够小,请在每张工作表中按Ctrl+a、Ctrl+C组合键,将其粘贴到新工作簿中,仅使用VBA的此模块,对其进行测试,如果可以使用,请使用VBA的其余部分,看看是否仍然可以使用。问题已解决!非常感谢Tyler N我不得不将所有内容复制到一个新的工作簿/模板中,一切正常。基于新模板的新工作簿从用户处获取数据,并将其放置在工作簿中的正确位置,包括更新工作表名称。我只是不知道为什么它不会在以前的模板工作!!!
Sheets(3).Name = Sheet3.Range("A5").Value