如果您不符合您的Cells
參考資料,它們默認爲ActiveSheet.Cells
。因此,你的代碼
Worksheets(1).Range(Cells(m, 2), Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(Cells(3, 2), Cells(3, 7)).Value
相當於
Worksheets(1).Range(ActiveSheet.Cells(m, 2), ActiveSheet.Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(ActiveSheet.Cells(3, 2), ActiveSheet.Cells(3, 7)).Value
這顯然是沒有意義的。
您應該使用
Worksheets(1).Range(Worksheets(1).Cells(m, 2), Worksheets(1).Cells(m, 7)).Value = _
ThisWorkbook.Worksheets(i).Range(ThisWorkbook.Worksheets(i).Cells(3, 2), ThisWorkbook.Worksheets(i).Cells(3, 7)).Value
這是更容易閱讀,如果你設置一些Worksheet
對象
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ActiveWorkbook.Worksheets(1)
Set ws2 = ThisWorkbook.Worksheets(i)
ws1.Range(ws1.Cells(m, 2), ws1.Cells(m, 7)).Value = _
ws2.Range(ws2.Cells(3, 2), ws2.Cells(3, 7)).Value
這些類型的問題已經問SOOOOOOOO多次在SO ....我可以指出至少10個不同的問題 –
@SiddharthRout **所有** VBA問題已被詢問至少10次。答案總是歸結爲「限定你的對象」,「停止使用選擇和激活」,「聲明你的變量」。 – YowE3K
@ YowE3K:不是大聲笑:)但是,如果你發現任何這樣的問題,隨時關閉它或投票將其關閉作爲一個副本。 –