【问题标题】:Copy paste to new Worksheet in Excel复制粘贴到 Excel 中的新工作表
【发布时间】:2025-11-26 14:20:04
【问题描述】:

所以我得到了这段代码,它将单元格从 C4 复制到 C10 并粘贴它们。问题是它粘贴到同一个工作表,我需要将它粘贴到第二个工作表。

我不知道如何在代码中更改工作表,所以我希望有人可以帮助我。

代码如下:

Sub Save_Click()
Range("C4:C10").Copy
Dim curRange As Range
Dim curCol As Integer: curCol = 7
Dim completed As Boolean: completed = False
Do
    curCol = curCol + 1
    Set curRange = Range(Cells(3, curCol), Cells(9, curCol))

If (WorksheetFunction.CountA(curRange) = 0) Then
   Exit Do
End If
Loop While (Not completed)

curRange.PasteSpecial
End Sub

【问题讨论】:

  • 您真的只是想将一张表 (C4:C10) 中的值粘贴到另一张表中,还是还有其他内容?中间的循环是否旨在找到下一个可用的未使用列?大概这也应该检查您正在粘贴的工作表?
  • 我告诉过你:只需将工作表名称添加到范围。如果原始工作表是“sheet1”,则 Range("C4:C10") 与 Sheets("sheet1").Range("C4:C10") 相同。如果目标范围在“sheet2”中,可以设置 curRange = Sheets("sheet2").Range(Cells(3, curCol), Cells(9, curCol))
  • 在处理不同的工作表时,您应该始终包含 Sheets("sheet name") 标题部分。 Range("C4:C10") 是 Sheets("sheet1").Range("C4:C10") 的缩写形式,在处理不同的工作表时可能会造成混淆(不确定活动工作表是 sheet1 还是 sheet2) .如果不清楚,请随时询问更多。如果您不理解我的观点,您应该在上一个问题中再次问我;我以为你很清楚。

标签: excel copy-paste worksheet-function vba


【解决方案1】:

对于工作表“Iskalnik”,正如您所做的那样,使用:

Sheets("Iskalnik").Range("C4:C10").Copy

对于工作表“Baza”,而不是这个:

Set curRange = Sheets("Baza").Range(Cells(3, curCol), Cells(9, curCol))

使用这个:

With Worksheets("Baza")
    Set curRange = .Range(.Cells(3, curCol), .Cells(9, curCol))
End With

curRange 的问题是RangeCells 关键字都需要引用工作表。 With ... End With 只是一种方便的方式。

【讨论】:

  • 谢谢你,我一直在尝试这样做,以至于我放弃了。感谢上帝,我看到了你的评论,所以我可以回到我的项目。
最近更新 更多