根据另一列中的单元格值命名工作表

时间:2014-06-06 08:48:06

标签: vba excel-vba excel

我对VBA有点新意,这是我的问题

我的sheet1中有两个cloumns

test        Name
1               A
2               B

现在我有代码运行并为cloumn" test"中的每个值创建一个新工作表。

例如,

第一次运行时,将获取1并运行我的代码并创建新工作表,并将创建的工作表名称设置为1(基于从测试列获取的值)。第二次,该过程重复创建新工作表并且工作表名称为2

现在这是我的精神。

我们是否可以根据" Name"来命名新创建的工作表。列而不是" test"柱

我的意思是当获取1并创建新工作表时,我想将其命名为" A"而不是1,当循环第二次运行时,我想将新表格命名为" B"而不是2

请帮忙

由于

更新

示例代码

    Dim ran As Range
    Dim cel As Object

    Set ran = Worksheets("sheet1").Range("A2:A100")

    For Each cel In ran

        If cel.value <> Empty Then

            ' this is mycode. am skipping it
            '<my code> ActiveWorkbook.Worksheets.Add
            '    With ActiveSheet.QueryTables.Add(Connection:= etc </mycode>

            ' once my code runs, a new sheet is created which as of now refrences
            ' to "test" column as said earlier. i want this to refer to "name"
            ' column when the loop runs so that the sheets are named based on
            ' "name" colum rather than "test"
            activesheet.name = cel

        Else
            Exit For

        End If
    Next cel

1 个答案:

答案 0 :(得分:1)

您需要更改用于命名的单元格的范围;如果&#34;名称&#34;在&#34; test&#34;旁边的列上,然后更改:

activesheet.name = cel

activesheet.name = CStr(cel.Offset(0,1).Value)

你应该没事。

请注意,您可能已将ran更改为范围"B2:B100",但我不确定您是否未在代码中使用范围"A2:A100"值...

<强>更新

如果是我的代码,我觉得最好为cel声明正确的类型:

Dim cel  As Excel.Range

但这对你的问题不是必不可少的。