Excel - 工作表名称等于单元格(但是给工作表命名的单元格都在同一工作表中)

时间:2014-12-24 13:28:30

标签: excel vba excel-vba worksheet

我想知道是否可以让工作表名称等于一张特定单元格。

例如:

我有一张名为

的表格
A1 = Name1

A2 = Name2

A3 = Name3

A4 = Name4

A5 = Name5

因此,工作表名称应基于这五个值

Sheet2 = Name1

Sheet3 = Name2

Sheet4 = Name3

Sheet5 = Name4

Sheet6 = Name5

这可以用VBA吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

Sheets(#).Name = Range("cell location").Value

#是指单张索引编号,cell location是单元格的地址(例如A2E17

你会想要对它进行一些错误处理,但是因为如果你已经有一个同名的工作表会出错:

On Error Resume Next
Sheets(#).Name = Range("cell location").Value
If Err.Number > 0 Then
    Err.Clear
    Msgbox Range("cell location").Value & " name already exists!"
End If

答案 1 :(得分:-1)

你可以让事件触发。

1)将以下代码放在“名称”标签的工作表对象中。

2)将所有工作表code names放在第一列的“名称”表格中(无标题)。

3)在第二栏中为相应的工作表选择您选择的标签名称。

更改第二列中的值时,工作表名称应自动更改。

<强> CODE

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim sheetName As String
    Dim sheetCodeName As String

    If Target.Column = "2" Then
        sheetName = Target.value
        sheetCodeName = Target.Offset(0, -1).value

        For Each Sheet In ActiveWorkbook.Worksheets
            If Sheet.CodeName = sheetCodeName Then

                On Error GoTo INVALIDCOLUMNNAME:
                Sheet.name = sheetName
                On Error GoTo 0

            End If

        Next Sheet

    End If

Exit Sub

INVALIDCOLUMNNAME:
msgbox "Invalid Column Name"

End Sub