【发布时间】:2023-03-27 21:40:02
【问题描述】:
我正在尝试将一堆表中的值粘贴到一个长列表中。我将表格分布在不同的工作表中,并且行数发生了变化,但列没有。然后我还尝试粘贴一个字符串值,该值告诉它来自哪个工作表,但是代码的活动单元格部分有问题。
当我第一次尝试它时,它没有编译,所以我来这里,找出它为什么没有编译。在下面与 urdearboy 来来回回,我能够在这里得到正确的代码。
我有以下几点:
sub copypaste()
Dim ws1 as worksheet
dim ws2 as worksheet
dim mas as worksheet
Set ws1 =ThisWorkbook.Sheets("Sheet1")
Set ws2=ThisWorkbook.Sheets("Sheet2")
Set mas=ThisWorkbook.Sheets("Master") 'where I create my list
For Each ws In Worksheets
If ws.Name <> mas.Name Then
LRow = mas.Range("A" & mas.Rows.Count).End(xlUp).Offset(1, 0).Row
wsLRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
ws.Range("A2:A" & wsLRow - 1).Copy
mas.Range("A" & LRow).PasteSpecial Paste:=xlPasteValues
ws.Range("B2:B" & wsLRow - 1).Copy
mas.Range("B" & LRow).PasteSpecial Paste:=xlPasteValues
mas.Range(mas.Cells(LRow, 4), mas.Cells(wsLRow + LRow - 2, 4)) = ws.Name 'I need my sheet value in the fourth column, not the third, but simply change the col coordinate in the Cells equation above
End If
Next ws
'In order to figure out the sheet name, I used the following:
Dim rng As Range
Set rng = mas.Range("D2", Range("D2").End(xlDown))
For Each Cell In rng
If Cell.Value = "Sheet 1" Then
Cell.Value = "S1"
ElseIf Cell.Value = "Sheet 2" Then
Cell.Value = "S2"
End If
Next Cell
结束子
【问题讨论】:
-
现在无法编译。语法错误
-
因此我的复制和粘贴问题。它不应该编译。
-
请参阅如何在您的问题中包含minimal reproducible example
-
@JackArmstrong 您在错误行上的范围存在语法问题。您可以在下面的解决方案中看到一种正确的方法。
-
请不要在问题中添加答案;这打破了问题。
标签: excel vba for-loop copy copy-paste