![](/img/trans.png)
[英]Search a worksheet for a cell value, then copy the adjacent cells into a variable range
[英]Copy the value from a cell in a worksheet into a range of cells
我打算執行一個宏,該宏將從指定的路徑打開一個工作簿,並循環瀏覽其工作表,該工作表的名稱專門為“ Januari,Februari,Mars”,以從C34中扣除該值。 C34每次都會記錄一個值,因此它不應更改。 但是我想將其復制到當前工作表中,第一個目標應在AA73處,第二個目標應在AA74等處。我的代碼是
Sub Test()
Dim myHeadings
Dim i As Long
Dim path As String
path = "C:\pathtofile\file.xlsx"
Dim currentWb As Workbook
Set currentWb = ActiveWorkbook
Dim openWb As Workbook
Set openWb = Workbooks.Open(path)
Dim openWs As Worksheet
myHeadings = Array("Januari", "Februari", "Mars")
For i = 0 To UBound(myHeadings)
Set openWs = openWb.Sheets("&i")
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
Next i
End Sub
但是編譯器說下標超出了行的范圍
Set openWs = openWb.Sheets("&i")
在這里,我嘗試做“ i”,“ i”和“ i”,但是並沒有改變。 另外,我嘗試使用“ ThisWorkbook”代替“ ActiveWorkbook”,但它也無濟於事。 是否有人對如何以更適當的方式實現這一目標有所投入?
編輯:適應Dave的響應,它可以導入工作表。 但是我得到一個錯誤:
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
在上述代碼段中出現自動化錯誤-2147221080(800401a8)的地方。
您已經將工作表名稱放入一個數組中,因此您可以通過以下方式從該數組中調用工作表名稱:
Set openWs = openWb.Sheets(myHeadings(i))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.