我想用 Excel 2007 中另一个工作表中的单元格的信息更新我的工作表名称。我只想更改特定的工作表名称(不是工作簿中的所有工作表),这些工作表的信息将来自同一工作表中的单元格. 我希望在更改单元格后立即对工作表名称进行这些更改。
谢谢。
我想用 Excel 2007 中另一个工作表中的单元格的信息更新我的工作表名称。我只想更改特定的工作表名称(不是工作簿中的所有工作表),这些工作表的信息将来自同一工作表中的单元格. 我希望在更改单元格后立即对工作表名称进行这些更改。
谢谢。
你想使用类似的东西
Sub changeName()
ThisWorkbook.Sheets("nameToBeChanged").Name = ThisWorkbook.Sheets("secondSheetName").Range("A1").Value
End Sub
这将使用工作表中单元格 A1 的值secondSheetName
作为名为 的工作表的名称nameToBeChanged
。
不要忘记工作表名称中不允许使用以下字符(即单元格 A1 不得包含以下字符):
\ / ? * [ ] < > " | :
工作表名称的最大长度为 31 个字符
然后在单元格的值发生更改后立即执行此操作,请使用事件。您可以从以下代码开始:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Value changed for cell: " & Target.Address
Call changeName
End Sub
您需要将该代码放在希望监听事件的工作表中(当然是在 VBA 窗口内)。
您可能会发现Santosh的帖子很有用
编辑:这是来自 Santosh 的图片(见上面的链接)。它向您显示了放置代码的确切位置:
如您所见,代码放置在名为 Sheet1 的项目中(箭头指向的位置)。在这种情况下,由于代码放置在 Sheet1 中,因此修改的每个单元格都将调用子 Worksheet_Change。
看来你没有尝试太多。
您可以使用工作表的名称和Worksheets
集合访问工作表。然后,您可以使用任何范围来访问包含您要检索的信息的单元格。假设它在单元格 B2 中:
Worksheets("ChangeMyName").Name = Worksheets("SomeOtherSheet").Range("B2")
要使其在单元格更改后立即更改,您必须实现 Change 事件并将目标单元格与您要照顾的单元格进行比较。
http://msdn.microsoft.com/en-us/library/office/ff839775.aspx