在此工作表中,我想从化学品选项卡的交叉行复制到提单选项卡。它适用于行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
目的表。我试着把它放回靶场,但运气不好。我检查了代码(这是我正在更新的旧工作簿),没有看到任何其他可能干扰的代码。
整个项目让我很头疼。如有任何帮助,我将不胜感激。
假设:
- 看起来你是通过点击你想复制的行中的一个单元格,然后双击该单元格来调用这个过程的。
- 您从空白的提单工作表开始。第9行可能有标题
- 您的期望是活动行的单元格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
假设你的数据下面没有任何东西
希望这对你有帮助。如果需要进一步澄清,请告诉我。