我有一张有两张纸的工作簿。工作表1的布局看起来像一个带有提交按钮的表单,名为 TravelRequest 。表2只是从表1收集的数据库,名为 TravelLog 。
以下是它现在的工作原理:
所以,现在我的脚本将一个单元格复制到另一个指定的单元格,我从这个网站尝试了许多不同的代码,但似乎无法使用任何代码,我的副本脚本也是硬编码的副本&粘贴操作。我不知道如何解决这个问题。
如果有人需要帮助,我可以在某处上传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的回答,我收到了这个错误
ERROR OVERFLOW
在这一行
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")
答案 0 :(得分:1)
试试这个......
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
。代码可以处理空格或不处理。