包含文本和公式值的Excel单元格的VBA处理
我刚开始使用VBA for Excel,遇到了一个无法解决的问题。我想制作一个宏,用于制作工作表的副本,并将副本重命名为单元格B8中指定的内容。现在,单元格B8包含一个字符串和一个值(基于公式),如下所示 细胞B8的含量 如何让VBA使用名称(字符串和数字)作为新工作表的名称包含文本和公式值的Excel单元格的VBA处理,vba,excel,macros,Vba,Excel,Macros,我刚开始使用VBA for Excel,遇到了一个无法解决的问题。我想制作一个宏,用于制作工作表的副本,并将副本重命名为单元格B8中指定的内容。现在,单元格B8包含一个字符串和一个值(基于公式),如下所示 细胞B8的含量 如何让VBA使用名称(字符串和数字)作为新工作表的名称 Sub NewFunction() Dim counter As Integer Sheets(1).Copy After:=Sheets(1) ActiveSheet.name = Sheets(1).Range
Sub NewFunction()
Dim counter As Integer
Sheets(1).Copy After:=Sheets(1)
ActiveSheet.name = Sheets(1).Range("B8").CStr
End Sub
提前谢谢 首先,不能在工作表名称中使用“/”。它可能会出错,但Excel将忽略它 第二,你把名字改错了。您添加了新工作表,然后引用了旧工作表 第三,不需要使用.CStr作为单元格的值,因为这是默认属性,所以也不需要使用.value。您就快到了
Sheets(1).Copy After:=Sheets(1)
ActiveSheet.name = Replace(Replace(Replace(Replace(Range("B8"), "\", "-"), "/", "-"), "?", "-"), "*", "-")
在哪里
- 在
对象的工作表
方法之后,新工作表将变为活动工作表Copy()
- VBA方法
是为了确保新工作表名称没有使用禁止字符chain
仍然存在可能重复名称的问题,如果您搜索将
.CStr
更改为。Value
我已经尝试过了,您可以在这里找到一个特定的函数来处理这个问题。它不起作用。当您尝试它时,您收到了什么错误消息?1)我认为第二个建议不正确:在Copy()
方法之后,新工作表变为活动工作表,而后者和旧工作表在单元格“B8”中具有相同的信息,因此ActiveSheet.name=Sheets(1).Range(“B8”)
将起作用(如果使用的是有效的工作表名称)2)关于第三条建议,我只想强调的是,这并不是说“没有必要使用.CStr”,因为CStr
不是Range
objectTrue的属性或方法,B8在这两个方面应该是相同的。非常感谢您的评论,认为问题没有自满地解决。调用“B8”(ActiveSheet.name=Sheets(1.Range(“B8”))
将使用=“CO”&randtween(1;800)”
而不是单元格(CO 745)的实际字符串/值。感谢您的回复。这是一种聪明的方法!