如何将以下代码编写为循环。我想从范围(b:17:L17")中连续复制工作表4中的表格中的值。是否有更有效的方法来做循环?
ActiveSheet.Range("B17").Value = Sheets(4).Range("G8")
ActiveSheet.Range("C17").Value = Sheets(4).Range("G9")
ActiveSheet.Range("D17").Value = Sheets(4).Range("G10")
ActiveSheet.Range("E17").Value = Sheets(4).Range("G11")
ActiveSheet.Range("F17").Value = Sheets(4).Range("G12")
ActiveSheet.Range("G17").Value = Sheets(4).Range("G13")
ActiveSheet.Range("H17").Value = Sheets(4).Range("G14")
ActiveSheet.Range("I17").Value = Sheets(4).Range("G15")
ActiveSheet.Range("J17").Value = Sheets(4).Range("G16")
ActiveSheet.Range("K17").Value = Sheets(4).Range("G17")
ActiveSheet.Range("L17").Value = Sheets(4).Range("G18")
答案 0 :(得分:8)
是的,有:
ActiveSheet.Range("B17:L17").Value = Application.Transpose(Sheets(4).Range("G8:G18").Value)
答案 1 :(得分:1)
你可以使用这样的东西(VB.Net,但可以很容易地复制到VBA):
Dim cell as Integer, c as Integer
cell = 8
For c = 66 To 76
ActiveSheet.Range(Chr(c) & "17").Value = Sheets(4).Range("G" & cell)
cell = cell + 1
Next
Chr()函数获取与字符代码(66-76)相关联的字符,然后将该值与字符串" 17"连接起来。形成一个完整的单元名称(" B17"," C17",...)
我也在同时增加G的单元格数。
如果您真的想要使用循环,请使用此选项 - 但可能有更好的方法,例如answer given by @A.S.H
答案 2 :(得分:1)
解决方案说明:
建立你的规则!活动纸张的范围有什么变化?该列将随着for / to循环的增长而增长!所以,我们应该总结一下。另外一件事会增加什么? '='另一侧的范围因此,通过设置算法,我们可以说在Activesheet范围内该行是const,而另一侧是列的on变量。
的 解决方案: 强>
Sub Test()
Const TotalInteractions As Long = 11
Dim CounterInteractions As Long
For CounterInteractions = 1 To TotalInteractions
'where 1 is column A so when it starts the cycle would be B,C and so on
'where 7 is the row to start so when it begins it would became 8,9 and so on for column G
ActiveSheet.Cells(17, 1 + CounterInteractions).Value = Sheets(4).Cells(7 + CounterInteractions, 7)
Next CounterInteractions
End Sub
答案 3 :(得分:0)
这可能是您在with语句中最有效的解决方案:
Sub LoopExample()
Sheets("Sheet4").Range("G8:G18").Copy
Sheets("Sheet2").Range("B17").PasteSpecial xlPasteValues, Transpose:=True
End Sub