使用连接字符串作为变量

时间:2017-06-01 19:23:15

标签: excel-vba vba excel

晚上好人!

我正在努力解决一个特定的问题,我已经确定了两个独立的解决方案,但我还没有具体解决它们

我在表格中列出了37个工作表名称(A1:A37),我想要运行的代码如下所示 - 我不知道如何设置' z'到特定的单元格引用 - 例如,如果A1是Sheet1,我希望Z是Sheet1并作为变量。我正在使用For循环遍历单元格。

Workbooks("ED Test.xlsx").Sheets(z).Range("E2:E21").Value = Workbooks("TPT.xlsm").Sheets(z).Range("A2:A21").Value

第二种方法,更麻烦的是让变量在VBA中设置并使用For循环(即For x = 1到37)将两个值连接成一个变量(例如" Sheet"和x)当我这样做时,它会给出一个不同的错误,因为它将串联视为字符串而不是变量

请停止:)

1 个答案:

答案 0 :(得分:1)

你需要一个循环。如果您尝试将每个工作表中的E2:E21设置为同一工作表(但在另一个工作簿)范围A2:A21中的任何内容,您将遍历这些工作表并完成您所拥有的工作以上:

Sub dothething()
    Dim cellSheetName As Range

    'loop through all the cells holding sheet names in sheet1 (assuming here)
    For Each cellSheetName In Sheet1.Range("A1:A37").Cells
        'Copy the values in whatever sheet we found
        'Noting that the sheetname is held in the cell's value (cellSheetName.value)
        Workbooks("ED Test.xlsx").Sheets(cellSheetName.Value).Range("E2:E21").Value = Workbooks("TPT.xlsm").Sheets(cellSheetName.Value).Range("A2:A21").Value
    Next cellSheetName
End Sub

这可能会更加强大,但它是一个很好的起点。