我正在尝试编写在excel宏(VBA)中执行以下操作的内容:
For 'column X' of 'spreadsheet'
Copy range(row(1):row(5)
Paste to 'other spreadsheet' in range (row(1):row(5)) and column(Y)
我想让它遍历电子表格中每一列的第一个电子表格。这就是我对1列的看法:
Sheets("Info").Range("B3:B6").Value = Worksheets("Temp").Range("HK5:HK8").Value
Sheets("Info").Range("C3:C6").Value = Worksheets("Temp").Range("HK10:HK13").Value
这就是我想要做的,但是对于第一个电子表格中的每一列(有300列,手动都会很乏味)。
编辑:这是我发现的另一种方式可能有助于解释下面留下的评论:
For i = 2 To 3
Worksheets("Info").Range(Cells(3, i), Cells(6, i)).Value = Worksheets("Temp").Range(Cells(5, i), Cells(8, i)).Value
Next i
我希望这会在列(2 - 290)上循环,目前仅从第2列到第3列进行测试。我希望来自第5-8行的每一列(' i')的TEMP工作表中的单元格,我想将其放入列(' i')第3行的INFO工作表中6。希望这有帮助!
答案 0 :(得分:0)
您的描述不一致,我不确定您的最终代码有什么问题。我已经留下了一个注释掉的调试语句,因此您可以看到正在使用的范围。
但是
使用工作表
完全限定Cells
引用
Public Sub test()
Dim i As Long
Dim wsInfo As Worksheet
Dim wsTemp As Worksheet
Set wsInfo = ThisWorkbook.Worksheets("Info")
Set wsTemp = ThisWorkbook.Worksheets("Temp")
Application.ScreenUpdating = False
For i = 2 To 290
' Debug.Print wsInfo.Name & "!" & wsInfo.Range(wsInfo.Cells(3, i), wsInfo.Cells(6, i)).Address & " = " & wsTemp.Name & "!" & wsTemp.Range(wsTemp.Cells(5, i), wsTemp.Cells(8, i)).Address
wsInfo.Range(wsInfo.Cells(3, i), wsInfo.Cells(6, i)).Value = wsTemp.Range(wsTemp.Cells(5, i), wsTemp.Cells(8, i)).Value
Next i
Application.ScreenUpdating = True
End Sub