【问题标题】:Setting a range when pasting data onto a sheet将数据粘贴到工作表时设置范围
【发布时间】:2020-05-29 12:43:05
【问题描述】:

我正在使用 vba 在 2 个 Excel 工作簿之间复制数据:

  • 数据源(复制自):工作簿 x,“等候名单”表。
  • 数据目标(粘贴到):工作簿 y,“所有年份数据”表。

这已成为一个问题,因为在我要粘贴数据的目标工作表上的工作簿 y 中,我添加了帮助列来帮助我的数据过滤。但是,现在当我将数据(使用 vba 自动)从源工作表复制并粘贴到目标工作表时,它似乎复制了所有列(有或没有数据),然后与我的辅助列重叠,使整个区域保持空白。

我现在想限制粘贴数据的范围,即从 A 列到 W 列,而不是粘贴在我的辅助列 X、Y 和 Z 以及整个剩余列上。

请看我下面的代码:-

Sub CopyToYearly2()

 Dim LastRow As Long
 Dim i As Long, j As Long
 Dim answer As Integer

answer = MsgBox("Do you intend to copy this data to the Yearly analysis sheet?", vbYesNo + vbQuestion, "Copy data to Yearly analysis sheet.")


   Set x = ThisWorkbook

   If answer = vbYes Then

   Set y = Workbooks.Open("S:\Downloads\workbook y.xlsm")


   With x.ActiveSheet 'Determine last used row on waitinglist.
      LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
   End With

   With y.Sheets("ALL Years Data")
      j = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
   End With

   For i = 3 To LastRow 

       'With x.Sheets("Waiting List")
       With x.ActiveSheet 
               .Rows(i).Copy Destination:=y.Sheets("ALL Years Data").Range("A" & j)
               j = j + 1

       End With
   Next i

   'Save x and y:
x.Save
y.Save

 Else
    'do nothing

End If


End Sub

谢谢。

【问题讨论】:

  • 问题是.Rows(i).Copy...您希望将其限制为某些列而不是整行。
  • 但是这里不需要循环复制。只需一步完成:

标签: excel vba


【解决方案1】:

您不需要循环来复制。一步完成。另外,不要使用Rows,而是将要复制的范围限制为您想要的列:

x.Worksheets("Waiting List").Range("A3:W" & LastRow).Copy _
     Destination:=y.Worksheets("ALL Years Data").Range("A" & j)

还有

Dim answer As Integer

可能更好

Dim answer as VbMsgBoxResult

【讨论】:

  • 感谢 BigBen 提供的所有这些有用的建议。我尝试使用循环的原因是因为这种数据复制将不止一次发生。因此,与其用新数据替换现有数据,不如将其自身添加到已经存在的数据中。回到家后,我将尝试实现您的代码,看看问题是否最终得到解决。
  • 从我的代码中可以看出,不需要循环来追加到已经存在的数据。
  • 好的,所以在测试它复制了正确的范围而不重叠我的帮助列:- 谢谢。现在唯一的问题是它也在复制整个列行,包括那些没有数据的行。我需要它复制并粘贴到最后使用的包含数据的行。 ~ 谢谢
  • 你是否保留了确定LastRow的行?
  • 如果你有桌子,也许可以看看this
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 2020-04-09
  • 2022-11-27
  • 1970-01-01
相关资源
最近更新 更多