【问题标题】:Copying data from one workbook to another gets pasted in random cells将数据从一个工作簿复制到另一个工作簿会粘贴到随机单元格中
【发布时间】:2018-10-09 01:11:40
【问题描述】:

更新

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

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

【问题讨论】:

    标签: excel vba copy-paste


    【解决方案1】:

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

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

    【讨论】:

    • 您好,我尝试了您的修复方法,但该数据仍被粘贴到 Y39 而不是下一个可用行。
    • @Gintoki006 你想让新数据出现在K37中吗?
    • K37 是表单中的单元格。
    猜你喜欢
    • 2013-10-21
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多