我需要帮助为H列中的每个ID执行第一个代码。我已经尝试建立一个“循环”和一个“for next”无济于事。
我想建立一种“i =行号”,并有一个“i + 1”命令,它将为列中的每个单元格执行相同的任务
真心感谢任何帮助!
Sub GenerateAll_1()
'Copy the first ID in the list (cell H2) and paste it
Sheets("Specialist Roster").Select
Range("H2").Select
Selection.Copy
Sheets("Weekly Productivity").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'My code that saves as pdf based on other criteria goes here
'REPEAT task for the cells H3, H4... H260
答案 0 :(得分:3)
这是一行子:
Sub GenerateAll_1()
Sheets("Specialist Roster").Range("H2:H" & Rows.Count).Copy Sheets("Weekly Productivity").Range("H2")
End Sub
不需要循环。如果您想避免第260行下方的 H 列中的值,则:
Sub GenerateAll_1()
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Specialist Roster").Range("H2:H260")
Set r2 = Sheets("Weekly Productivity").Range("H2")
r1.Copy r2
End Sub
答案 1 :(得分:3)
要仅按照代码建议(xlPasteValues
)复制数据,请执行以下操作:
Sheets("Weekly Productivity").Range("H2:H260") =
Sheets("Specialist Roster").Range("H2:H260").Value
没有循环。
你甚至可以在没有代码的情况下完成它,只需在“每周生产力”中加入一个公式:
在单元格H2中:
='Specialist Roster'!H2
......并根据需要向下拖动。
如果你真的需要循环(因为你想根据中间结果做其他任务),那就去吧:
Sub GenerateAll_1()
Dim source As Range ' cell from which you copy
Dim target As Range ' cell to which you copy
Set target = Sheets("Weekly Productivity").Range("H1")
For Each source In Sheets("Specialist Roster").Range("H2:H260")
target = source.Value ' copy the value (only)
Set target = target.Offset(1) ' let target point to next cell
' perform other tasks here
Next
End Sub
答案 2 :(得分:1)
这个例子只是为了让你了解for循环在这里是如何工作的。应该注意的是,循环不是在表之间复制和粘贴值的最有效方式。我认为其他一些解决方案可以更好地解决有效方法:
For i = 2 To 260
Sheets("Specialist Roster").Range("H" & i).Copy
'here you need to specify what range you want to copy to
Sheets("Weekly Productivity").Range("H" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
这不是一个很好的扩展解决方案,因为它是硬编码的第2到第260行。但是使用某些变量可以做得更好。希望这有点帮助...