我正在努力解决的一个简单问题。
我正在将多个工作表中的值复制并粘贴到一个主表中,如下所示。
Sub()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Select Case LCase(ws.Name)
Case [...] 'do nothing for selected worksheets
Case Else
ws.Range("J2") = ws.Name
Dim myLastCell As Range
Set myLastCell = LastCell(ws.Range("A:J"))
ws.Range("A1:J" & myLastCell.Row).Copy Sheets("MasterDates").Cells(rows.Count, "B").End(xlUp).Offset(1)
End Select
Next
End Sub
上面的代码引用了一个找到最后一个单元格的函数myLastCell。
以下是问题:我还想把我放在每个J2中的工作表名称复制并粘贴到列的每个单元格中的每个工作表中,直到数据结束。这样,适当的日期将与我正在创建的长母版表中的所有其他值对齐。
我试图插入下面的代码,只是for循环本身然后在sub中,但我不知道如何将它合并到已经发生的循环中。所有人都非常感谢!
Sub testpaste()
DateValue = Range("J2").Value
stoprow = Range("A1").End(xlDown).Row
For i = 3 To stoprow
Cells(i, 10).Value = DateValue
Next
End Sub
答案 0 :(得分:0)
您可以将工作表作为参数添加到testpaste sub:
Sub testpaste(myWorksheet as worksheet)
DateValue = myWorksheet.Range("J2").Value
stoprow = myWorksheet.Range("A1").End(xlDown).Row
For i = 3 To stoprow
myWorksheet.Cells(i, 10).Value = DateValue
Next
End Sub
然后从Select语句中调用它:
Case Else
ws.Range("J2") = ws.Name
testpaste(ws)
Dim myLastCell As Range
Set myLastCell = LastCell(ws.Range("A:J"))
ws.Range("A1:J" & myLastCell.Row).Copy Sheets("MasterDates").Cells(rows.Count, "B").End(xlUp).Offset(1)
但是,如果您打算从代码的其他部分调用它,那么这只是必要的。否则,您可以将其添加为当前Select语句的一部分:
Case Else
ws.Range("J2") = ws.Name
DateValue = ws.Range("J2").Value
stoprow = ws.Range("A1").End(xlDown).Row
For i = 3 To stoprow
ws.Cells(i, 10).Value = DateValue
Next
Dim myLastCell As Range
Set myLastCell = LastCell(ws.Range("A:J"))
ws.Range("A1:J" & myLastCell.Row).Copy Sheets("MasterDates").Cells(rows.Count, "B").End(xlUp).Offset(1)