2017-06-01 48 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