首页 > 解决方案 > 将数据从一个工作簿复制到另一个工作簿会粘贴到随机单元格中

问题描述

更新

我一直在玩弄我的代码,并想出了如何第二次将数据粘贴到正确的位置,但是如果再次按下按钮,数据将根本不会粘贴。这是更新的代码:

Dim kRow As Long
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row

If ws2.Range("W4").Value = "" Then
ws2.Range("W4").Value = ws1.Range("A4").Value
Else:
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row - 31
ws2.Range("W" & kRow).Offset(1).Value = ws1.Range("A4").Value
End If

Dim lRow As Long
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row

If ws2.Range("V10").Value = "" Then
ws2.Range("V10").Value = ws1.Range("P2").Value
Else:
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row - 31
ws2.Range("V" & lRow).Offset(1).Value = ws1.Range("P2").Value
End If

Dim mRow As Long
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row

If ws2.Range("Y10").Value = "" Then
ws2.Range("Y10").Value = ws1.Range("K37").Value
Else:
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row - 28
ws2.Range("Y" & mRow).Offset(1).Value = ws1.Range("K37").Value
End If

原帖


我在将数据从一个工作簿复制和粘贴到另一个工作簿时遇到了这个烦人的问题。我正在尝试将一些数据从用户表单复制到保留所有数据的主工作簿。我进行了设置,以便当用户完成表单后,他们单击宏按钮并打开主工作簿,将表单中的数据粘贴到主工作簿中,然后关闭。下次填写用户表单并按下宏按钮时,数据将粘贴到主工作簿的下一个可用行中。除了 5 条数据之外,我想要传输的大部分数据都有效。

我第一次按下按钮时,一切都很好。但是,如果我再次按下按钮,这 5 条数据不会按预期粘贴到下一行,而是粘贴到比预期低 31 到 28 行的位置。我一直在尽一切努力解决这个问题,但我似乎找不到问题所在。

我将在下面发布相关代码。任何帮助将不胜感激。谢谢!

Dim kRow As Long
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row

If ws2.Range("W10").Value = "" Then
ws2.Range("W10").Value = ws1.Range("A4").Value
Else: ws2.Range("W" & kRow).Offset(1).Value = ws1.Range("A4").Value
End If

Dim lRow As Long
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row

If ws2.Range("V10").Value = "" Then
'ws2.Range("V10").Value = ws1.Range("P2").Value
Else: ws2.Range("V" & lRow).Offset(1).Value = ws1.Range("P2").Value
End If

Dim mRow As Long
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row

If ws2.Range("Y10").Value = "" Then
ws2.Range("Y10").Value = ws1.Range("K37").Value
Else: ws2.Range("Y" & mRow).Offset(1).Value = ws1.Range("K37").Value
End If

标签: excelvbacopy-paste

解决方案


您将偏移量设置为 1,这意味着它采用了范围的两个维度并将其偏移了这么多。

如果您希望它出现在最后一行之后的行中,请尝试ws2.Range("Y" & mRow).Offset(1,0).Value


推荐阅读