使用Excel中的button将信息从一张纸复制到另一张纸上

我有两张工作簿。 工作表1的布局看起来像一个带有提交button的表单,并命名为TravelRequest 。 工作表2只是从工作表1中收集并命名为TravelLog的数据库。

现在是如何工作的:

  1. Sheet 1上的用户填写Excel表单的正确部分
  2. 用户点击提交button
  3. 数据被复制到工作表2上的所有行中,并清除工作表1的条目
  4. 当下一个用户填写表格时,应该在表格2中添加一个新的ROW

所以,现在我的脚本复制一个单元格到另一个指定的单元格,我尝试了许多不同的代码从这个网站,但似乎得不到任何工作,也是我的复制脚本是硬编码的复制和粘贴操作。 我不知道如何解决这个问题。

如果有人需要帮助,我可以上传Excel表格。

Sub Submit() Application.ScreenUpdating = False Range("L5").Copy Sheets("TravelLog").Range("B6").PasteSpecial xlPasteValues Range("C5").Copy Sheets("TravelLog").Range("C6").PasteSpecial xlPasteValues Range("G5").Copy Sheets("TravelLog").Range("D6").PasteSpecial xlPasteValues Range("c10").Copy Sheets("TravelLog").Range("E6").PasteSpecial xlPasteValues Range("c9").Copy Sheets("TravelLog").Range("F6").PasteSpecial xlPasteValues Range("I9").Copy Sheets("TravelLog").Range("G6").PasteSpecial xlPasteValues Range("I10").Copy Sheets("TravelLog").Range("H6").PasteSpecial xlPasteValues Range("C13").Copy Sheets("TravelLog").Range("I6").PasteSpecial xlPasteValues Range("C14").Copy Sheets("TravelLog").Range("J6").PasteSpecial xlPasteValues Range("C15").Copy Sheets("TravelLog").Range("K6").PasteSpecial xlPasteValues Range("C16").Copy Sheets("TravelLog").Range("L6").PasteSpecial xlPasteValues Range("C17").Copy Sheets("TravelLog").Range("M6").PasteSpecial xlPasteValues Range("C18").Copy Sheets("TravelLog").Range("N6").PasteSpecial xlPasteValues Range("i13").Copy Sheets("TravelLog").Range("O6").PasteSpecial xlPasteValues Range("i14").Copy Sheets("TravelLog").Range("P6").PasteSpecial xlPasteValues Range("i15").Copy Sheets("TravelLog").Range("Q6").PasteSpecial xlPasteValues Range("i16").Copy Sheets("TravelLog").Range("R6").PasteSpecial xlPasteValues Range("i17").Copy Sheets("TravelLog").Range("S6").PasteSpecial xlPasteValues Range("h20").Copy Sheets("TravelLog").Range("W6").PasteSpecial xlPasteValues Application.ScreenUpdating = True End Sub 


*编辑*

用druciferre的回答,我得到这个错误

错误溢出

在这条线上

 Worksheets("TravelLog").Range(Dest).Value = Worksheets("TravelRequest").Range(Field).Value 

这里是更新的refTable数组。

 refTable = Array("B = L5", "C = C5", "D=G5", "E=C10", "F=C9", "G=I9", "H=I10", "I=C13", "J=C14", "K=C15", "L=C16", "M=C17", "N=C18", "O=I13", "P=I14", "Q=I15", "R=I16", "S=I17", "W=H20") 

尝试这个…

 Dim refTable As Variant, trans As Variant refTable = Array("B = L5", "C = C5", "D=G5", "E=C10", "F=C9") Dim Row As Long Row = Worksheets("TravelLog").UsedRange.Rows.Count + 1 For Each trans In refTable Dim Dest As String, Field As String Dest = Trim(Left(trans, InStr(1, trans, "=") - 1)) & Row Field = Trim(Right(trans, Len(trans) - InStr(1, trans, "="))) Worksheets("TravelLog").Range(Dest).value = Worksheets("TravelRequest").Range(Field).value Next 

refTable数组中,每个项目都是表单字段到目标列的转换。 所以,如果表格中的L5应该出现在日志上的B列上,那么你写出B = L5 。 代码可以处理与空间或没有。