2017-06-01 52 views
0

傍晚你好人!使用连接字符串作为变量

我正与一个特定的问题挣扎,还有,我已经确定了两个独立的解决方案,但我还没有具体解决他们

我有一个表(A1:A37)的37个名称的列表和我想要运行的代码如下所示 - 我不知道如何将“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设置和使用的条件循环(即,对于x = 1至37),以将两个值连接成一个变量(例如,“表”并且x )当我这样做,它提供了不同的错误,因为它将串联为一个字符串,而不是变量

请HALP :)

回答

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 

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

+0

啊,好像它很容易为每个循环设置正确的,谢谢你很多,今天我学到了很多:) – OliEshmade

+0

你可以做'为我= 1到37'然后'Sheets(Sheet1.Range(“A”&i).value).range(“E2:E21”).value',但这很丑陋,并且'range.cells中的每个单元格'在这里更有意义。 – JNevill