【问题标题】:Copy Paste Cells through Excel VBA通过 Excel VBA 复制粘贴单元格
【发布时间】:2021-02-24 12:27:42
【问题描述】:

我编写了一个代码,它复制 Sheet1 单元格 A2 和 B2,然后将这些单元格粘贴到 Sheet2 单元格 G5 和 G6 中。

我一直在尝试创建一个循环,在第一个场景之后,当我再次运行代码时,它应该复制单元格A3 and B3,然后粘贴到Cells G5 and G6 (these cell will always be same)

每次运行宏时,我都想前进一排。

我尝试过使用 OFFSET 功能,但它只工作一次。

Sub copy()
Dim lRow, i As Long
Dim sht1 As Worksheet
Dim sht2 As Worksheet

Set sht1 = Sheet1
Set sht2 = Sheet2

sht1.Cells(2, 1).Offset(1, i).Copy Destination:=sht2.Cells(5, 7)
sht1.Cells(2, 2).Offset(1, i).Copy Destination:=sht2.Cells(6, 7)
End Sub

【问题讨论】:

  • 嗨,很高兴您在这里找到了解决方案。我只是想向您展示我的复制粘贴工具“模式传输”——它是为此目的而设计的(将数据从一个结构传输到另一个结构),并且它是完全可配置的。这是一个基于宏的 Excel 文件,可在此处免费下载:patterntransfer.co.uk

标签: excel vba


【解决方案1】:

每次运行时,在输入表中定位上一个值并复制下一个值

option explicit

Sub copy()

Dim sht1 As Worksheet
Dim sht2 As Worksheet

Set sht1 = Sheet1
Set sht2 = Sheet2



dim r as range
set r = range(sht1.Cells(2, 1), sht1.Cells(2, 1).end(xlDown))

dim offset_row as variant

if isempty(sht2.Cells(5, 7).value) then
  offset_row=0
else
  offset_row=application.worksheetfunction.match(sht2.Cells(5, 7).value, r, 0)
endif

if not iserror(offset_row) then
  if offset_row <> r.rows.count then
    sht1.Cells(2, 1).offset(offset_row, 0).Copy Destination:=sht2.Cells(5, 7)
    sht1.Cells(2, 1).offset(offset_row, 1).Copy Destination:=sht2.Cells(6, 7)
  endif
endif



End Sub

【讨论】:

  • 谢谢,但它直接将我带到值@JohnnieL 的末尾,而它应该在运行代码时一一进行。
  • 所以你想每次运行宏都前进一行?
  • 现在试试吧^^
  • 非常感谢它现在的工作,但还有一个问题是当它进入最后一行时,即 row8 现在它应该停止在该行而不是 G5 和 G6 中的空输出并运行再次从 row2 像 Exit Sub
  • 好的,所以我们需要测试offset_row = r.rows.count,这是“我们到了尽头”的条件 - 你为什么不自己尝试呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
相关资源
最近更新 更多