请检查以下代码,并在代码后给出解释:
Sub SaveRecord()
Dim DE As Worksheet ‘Data Entry Sheet
Dim DR As Worksheet ‘Data Record Sheet
Dim PR As Long ‘Find the row to paste data into
Set DE = Sheet2
Set DR = Sheet6
PR = DR.Range("B" & Rows.Count).End(xlUp).Row
With DR
.Cells(PR + 1, 2).Value = DE.Range("B6").Value
.Cells(PR + 1, 3).Value = DE.Range("F6").Value
.Cells(PR + 1, 4).Value = DE.Range("B7").Value
.Cells(PR + 1, 5).Value = DE.Range("F7").Value
.Cells(PR + 1, 6).Value = DE.Range("H6").Value
.Cells(PR + 1, 7).Value = DE.Range("B11").Value
.Cells(PR + 1, 8).Value = DE.Range("E11").Value
.Cells(PR + 1, 9).Value = DE.Range("H11").Value
.Cells(PR + 1, 10).Value = DE.Range("B14").Value
.Cells(PR + 2, 10).Value = DE.Range("B15").Value
.Cells(PR + 3, 10).Value = DE.Range("B16").Value
.Cells(PR + 4, 10).Value = DE.Range("B17").Value
.Cells(PR + 5, 10).Value = DE.Range("B18").Value
.Cells(PR + 6, 10).Value = DE.Range("B19").Value
.Cells(PR + 7, 10).Value = DE.Range("B20").Value
.Cells(PR + 8, 10).Value = DE.Range("B21").Value
.Cells(PR + 9, 10).Value = DE.Range("B22").Value
.Cells(PR + 10, 10).Value = DE.Range("B23").Value
.Cells(PR + 1, 11).Value = DE.Range("C14").Value
.Cells(PR + 2, 11).Value = DE.Range("C15").Value
.Cells(PR + 3, 11).Value = DE.Range("C16").Value
.Cells(PR + 4, 11).Value = DE.Range("C17").Value
.Cells(PR + 5, 11).Value = DE.Range("C18").Value
.Cells(PR + 6, 11).Value = DE.Range("C19").Value
.Cells(PR + 7, 11).Value = DE.Range("C20").Value
.Cells(PR + 8, 11).Value = DE.Range("C21").Value
.Cells(PR + 9, 11).Value = DE.Range("C22").Value
.Cells(PR + 10, 11).Value = DE.Range("C23").Value
'
.Cells(PR + 1, 12).Value = DE.Range("D14").Value
.Cells(PR + 2, 12).Value = DE.Range("D15").Value
.Cells(PR + 3, 12).Value = DE.Range("D16").Value
.Cells(PR + 4, 12).Value = DE.Range("D17").Value
.Cells(PR + 5, 12).Value = DE.Range("D18").Value
.Cells(PR + 6, 12).Value = DE.Range("D19").Value
.Cells(PR + 7, 12).Value = DE.Range("D20").Value
.Cells(PR + 8, 12).Value = DE.Range("D21").Value
.Cells(PR + 9, 12).Value = DE.Range("D22").Value
.Cells(PR + 10, 12).Value = DE.Range("D23").Value
'
.Cells(PR + 1, 13).Value = DE.Range("E14").Value
.Cells(PR + 2, 13).Value = DE.Range("E15").Value
.Cells(PR + 3, 13).Value = DE.Range("E16").Value
.Cells(PR + 4, 13).Value = DE.Range("E17").Value
.Cells(PR + 5, 13).Value = DE.Range("E18").Value
.Cells(PR + 6, 13).Value = DE.Range("E19").Value
.Cells(PR + 7, 13).Value = DE.Range("E20").Value
.Cells(PR + 8, 13).Value = DE.Range("E21").Value
.Cells(PR + 9, 13).Value = DE.Range("E22").Value
.Cells(PR + 10, 13).Value = DE.Range("E23").Value
.Cells(PR + 1, 14).Value = DE.Range("F14").Value
.Cells(PR + 2, 14).Value = DE.Range("F15").Value
.Cells(PR + 3, 14).Value = DE.Range("F16").Value
.Cells(PR + 4, 14).Value = DE.Range("F17").Value
.Cells(PR + 5, 14).Value = DE.Range("F18").Value
.Cells(PR + 6, 14).Value = DE.Range("F19").Value
.Cells(PR + 7, 14).Value = DE.Range("F20").Value
.Cells(PR + 8, 14).Value = DE.Range("F21").Value
.Cells(PR + 9, 14).Value = DE.Range("F22").Value
.Cells(PR + 10, 14).Value = DE.Range("F23").Value
End With
结束子
首先,我想告诉您以上代码的工作原理
它将数据值从数据输入工作表单元复制到数据记录工作表单元。
**数据输入表B14:F23的可选值单元格 **这些单元格中的数据最小值为1,可以在D14或E14中输入,在整个范围中最大值为50。
它将数据值粘贴到“数据记录表”单元格中 B5,C5,D5,E5,F5,G5,H5,I5 J5:N14
您会注意到第一条记录是从B5开始到N14 第二条记录从B6:N15开始(并继续进行),第二条记录覆盖了之前无法接受的先前单元格J5:N14的数据。
我需要的解决方案是从“可选值”单元格之后的位置开始下一条记录(并继续进行), 假设 如果数据输入工作表单元格的值在D14结束 然后从B15的数据记录表单元格开始下一个记录 如果“数据输入表单元格”值以F21结尾 接下来的记录将从B22的数据记录表单元开始
为了更好地理解,我在下面提供了一个链接,用于手动将数据从“数据输入表”复制到“数据记录表”。
https://drive.google.com/open?id=1ABg7Db2-ZGCmMTfg_rjqOCQ8HTZFe-9w
注意:不必在上面的代码中进行更改。
请帮帮我。
感谢与问候
Muneeb