VBA将行复制到另一个工作表,但在第10行停止,然后停留在第1行



在此工作表中,我想从化学品选项卡的交叉行复制到提单选项卡。它适用于行10-19(工作表)(范围内的1-10)。然后它选择范围内的第一行并停留在那里。它继续复制并粘贴到该行。

原复制范围为sh Chemicals active row D:M目的地为wsh提单,其范围为A10(第一行数据)至J27。我当前的代码如下:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, 
Cancel As Boolean)
Dim thisRow As Long
Dim nwSh As Worksheet
Dim newRow As Long
Set nwSh = ThisWorkbook.Sheets("Bill of Lading")
newRow = nwSh.UsedRange.Rows(nwSh.Range("a9:j27").Rows.Count).End(xlUp).Offset(1).Row
thisRow = ActiveCell.Row
Intersect(ActiveCell.EntireRow, Range("d:m")).Copy Sheets("Bill of Lading").Range("a" & newRow)

'MsgBox nwSh.UsedRange.Rows(nwSh.Range("a9:j27").Rows.Count).End(xlUp).Offset(1).Row

目的表。我试着把它放回靶场,但运气不好。我检查了代码(这是我正在更新的旧工作簿),没有看到任何其他可能干扰的代码。

整个项目让我很头疼。如有任何帮助,我将不胜感激。

假设:

  1. 看起来你是通过点击你想复制的行中的一个单元格,然后双击该单元格来调用这个过程的。
  2. 您从空白的提单工作表开始。第9行可能有标题
  3. 您的期望是活动行的单元格D:M将被复制到从第10行开始的单元格A:J中。持续下来。

你的问题出在这一行:

newRow = nwSh.UsedRange.Rows(nwSh.Range("a9:j27").Rows.Count).End(xlUp).Offset(1).Row

这部分将始终返回值19 (27 - 9 + 1 = 19):

nwSh.Range("a9:j27").Rows.Count

因此,每次运行代码时,它都以UsedRange.Rows(19)开始,然后是。end (xlUp). offset(1)。

第一次运行它时,xlUp将带您到第9行,偏移量将带您到第10行。第二次转到第10行,偏移到第11行。继续,当您到达第9次时,xlUp将带您到17,offset将变为18。然后在第10次时,将xlUp设置为18,offset设置为19,然后填充该单元格。

现在,在第11次和随后的次数中,您仍然从第19行开始,但是它已被填充,它上面的所有单元格也是如此。因此,xlUp将一直带您到第9行,偏移到第10行,并将继续填充第10行。

一个简单的解决方法是修改
nwSh.Range("a9:j27").Rows.Count

Rows.Count

假设你的数据下面没有任何东西

希望这对你有帮助。如果需要进一步澄清,请告诉我。

相关内容

最新更新