Excel 如何将数据从一张工作表的表单输入到另一张工作表的日志中
因此,我试图找出如何设置一个宏,将我在一张工作表中输入的数据记录到另一张工作表中的表格中,然后将其记录到另一张工作表中的日志中。它将记录它,但我的大问题是,它需要转到下一行,我不能完全弄清楚它的代码。下面是我的代码的样子:Excel 如何将数据从一张工作表的表单输入到另一张工作表的日志中,excel,vba,Excel,Vba,因此,我试图找出如何设置一个宏,将我在一张工作表中输入的数据记录到另一张工作表中的表格中,然后将其记录到另一张工作表中的日志中。它将记录它,但我的大问题是,它需要转到下一行,我不能完全弄清楚它的代码。下面是我的代码的样子: Sub Appt() ' ' Appt Macro ' ' Range("E4").Select Selection.Copy Sheets("Appointments").Select Range("G7").Select ActiveSheet.Paste Shee
Sub Appt()
'
' Appt Macro
'
'
Range("E4").Select
Selection.Copy
Sheets("Appointments").Select
Range("G7").Select
ActiveSheet.Paste
Sheets("Data Entry").Select
Range("E6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Appointments").Select
Range("D7").Select
ActiveSheet.Paste
Sheets("Data Entry").Select
Range("E8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Appointments").Select
Range("E7").Select
ActiveSheet.Paste
Sheets("Data Entry").Select
Range("E10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Appointments").Select
Range("F7").Select
ActiveSheet.Paste
Sheets("Data Entry").Select
Range("E12").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Appointments").Select
Range("H7").Select
ActiveSheet.Paste
Sheets("Data Entry").Select
Range("E4").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("E6").Select
Selection.ClearContents
Range("E8").Select
Selection.ClearContents
Range("E10").Select
Selection.ClearContents
Range("E12").Select
Selection.ClearContents
End Sub
要获取工作表上的下一个空行(“约会”),可以使用以下公式获取行号:
tRw = Sheets("Appointments").Range("D" & Rows.count).End(xlUp).Offset(1).Row
这假设您粘贴的内容下方的D列中没有任何内容
很明显,您使用了宏记录器,这是一个很好的学习方法。但是使用.select
太多会减慢速度,这是不必要的
为了避免将工作表声明为变量,然后每个复制粘贴需要一行
Sub APPT()
Dim oWs As Worksheet
Dim tWs As Worksheet
Dim tRw As Long
Set oWs = Sheets("Data Entry")
Set tWs = Sheets("Appointments")
tRw = tWs.Range("D" & Rows.count).End(xlUp).Offset(1).Row
With oWs
.Range("E4").copy tWs.Range("G" & tRw)
.Range("E6").copy tWs.Range("D" & tRw)
.Range("E8").copy tWs.Range("E" & tRw)
.Range("E10").copy tWs.Range("F" & tRw)
.Range("E12").copy tWs.Range("H" & tRw)
.Range("E4").ClearContents
.Range("E6").ClearContents
.Range("E8").ClearContents
.Range("E10").ClearContents
.Range("E12").ClearContents
End With
End Sub
关于寻找下一行的其他方法,请参见Siddharth Rout的答案
正如BruceWayne在评论中所说,这是一个很好的参考,说明了为什么/如何避免使用
。选择获取工作表上的下一个空行(“约会”),您可以使用以下公式获取行号:
tRw = Sheets("Appointments").Range("D" & Rows.count).End(xlUp).Offset(1).Row
这假设您粘贴的内容下方的D列中没有任何内容
很明显,您使用了宏记录器,这是一个很好的学习方法。但是使用.select
太多会减慢速度,这是不必要的
为了避免将工作表声明为变量,然后每个复制粘贴需要一行
Sub APPT()
Dim oWs As Worksheet
Dim tWs As Worksheet
Dim tRw As Long
Set oWs = Sheets("Data Entry")
Set tWs = Sheets("Appointments")
tRw = tWs.Range("D" & Rows.count).End(xlUp).Offset(1).Row
With oWs
.Range("E4").copy tWs.Range("G" & tRw)
.Range("E6").copy tWs.Range("D" & tRw)
.Range("E8").copy tWs.Range("E" & tRw)
.Range("E10").copy tWs.Range("F" & tRw)
.Range("E12").copy tWs.Range("H" & tRw)
.Range("E4").ClearContents
.Range("E6").ClearContents
.Range("E8").ClearContents
.Range("E10").ClearContents
.Range("E12").ClearContents
End With
End Sub
关于寻找下一行的其他方法,请参见Siddharth Rout的答案
正如BruceWayne在评论中所说,这是一个很好的参考,说明了为什么/如何避免使用。选择获取工作表上的下一个空行(“约会”),您可以使用以下公式获取行号:
tRw = Sheets("Appointments").Range("D" & Rows.count).End(xlUp).Offset(1).Row
这假设您粘贴的内容下方的D列中没有任何内容
很明显,您使用了宏记录器,这是一个很好的学习方法。但是使用.select
太多会减慢速度,这是不必要的
为了避免将工作表声明为变量,然后每个复制粘贴需要一行
Sub APPT()
Dim oWs As Worksheet
Dim tWs As Worksheet
Dim tRw As Long
Set oWs = Sheets("Data Entry")
Set tWs = Sheets("Appointments")
tRw = tWs.Range("D" & Rows.count).End(xlUp).Offset(1).Row
With oWs
.Range("E4").copy tWs.Range("G" & tRw)
.Range("E6").copy tWs.Range("D" & tRw)
.Range("E8").copy tWs.Range("E" & tRw)
.Range("E10").copy tWs.Range("F" & tRw)
.Range("E12").copy tWs.Range("H" & tRw)
.Range("E4").ClearContents
.Range("E6").ClearContents
.Range("E8").ClearContents
.Range("E10").ClearContents
.Range("E12").ClearContents
End With
End Sub
关于寻找下一行的其他方法,请参见Siddharth Rout的答案
正如BruceWayne在评论中所说,这是一个很好的参考,说明了为什么/如何避免使用。选择获取工作表上的下一个空行(“约会”),您可以使用以下公式获取行号:
tRw = Sheets("Appointments").Range("D" & Rows.count).End(xlUp).Offset(1).Row
这假设您粘贴的内容下方的D列中没有任何内容
很明显,您使用了宏记录器,这是一个很好的学习方法。但是使用.select
太多会减慢速度,这是不必要的
为了避免将工作表声明为变量,然后每个复制粘贴需要一行
Sub APPT()
Dim oWs As Worksheet
Dim tWs As Worksheet
Dim tRw As Long
Set oWs = Sheets("Data Entry")
Set tWs = Sheets("Appointments")
tRw = tWs.Range("D" & Rows.count).End(xlUp).Offset(1).Row
With oWs
.Range("E4").copy tWs.Range("G" & tRw)
.Range("E6").copy tWs.Range("D" & tRw)
.Range("E8").copy tWs.Range("E" & tRw)
.Range("E10").copy tWs.Range("F" & tRw)
.Range("E12").copy tWs.Range("H" & tRw)
.Range("E4").ClearContents
.Range("E6").ClearContents
.Range("E8").ClearContents
.Range("E10").ClearContents
.Range("E12").ClearContents
End With
End Sub
关于寻找下一行的其他方法,请参见Siddharth Rout的答案
正如BruceWayne在他的评论中所说,这是一个关于为什么/如何避免使用的很好的参考。选择最好避免用户的剪贴板,并直接分配值:
Sub Appt()
Dim n&, v
v = [transpose(offset('data entry'!e4,{0;2;4;6;8},))]
With Sheets("appointments")
n = .Range("d" & .Rows.Count).End(xlUp).Row
.[g1].Offset(n) = v(1)
.[d1].Offset(n) = v(2)
.[e1].Offset(n) = v(3)
.[f1].Offset(n) = v(4)
.[h1].Offset(n) = v(5)
End With
Sheets("data entry").Range("e4,e6,e8,e10,e12").ClearContents
End Sub
最好避免使用用户的剪贴板,并直接指定值:
Sub Appt()
Dim n&, v
v = [transpose(offset('data entry'!e4,{0;2;4;6;8},))]
With Sheets("appointments")
n = .Range("d" & .Rows.Count).End(xlUp).Row
.[g1].Offset(n) = v(1)
.[d1].Offset(n) = v(2)
.[e1].Offset(n) = v(3)
.[f1].Offset(n) = v(4)
.[h1].Offset(n) = v(5)
End With
Sheets("data entry").Range("e4,e6,e8,e10,e12").ClearContents
End Sub
最好避免使用用户的剪贴板,并直接指定值:
Sub Appt()
Dim n&, v
v = [transpose(offset('data entry'!e4,{0;2;4;6;8},))]
With Sheets("appointments")
n = .Range("d" & .Rows.Count).End(xlUp).Row
.[g1].Offset(n) = v(1)
.[d1].Offset(n) = v(2)
.[e1].Offset(n) = v(3)
.[f1].Offset(n) = v(4)
.[h1].Offset(n) = v(5)
End With
Sheets("data entry").Range("e4,e6,e8,e10,e12").ClearContents
End Sub
最好避免使用用户的剪贴板,并直接指定值:
Sub Appt()
Dim n&, v
v = [transpose(offset('data entry'!e4,{0;2;4;6;8},))]
With Sheets("appointments")
n = .Range("d" & .Rows.Count).End(xlUp).Row
.[g1].Offset(n) = v(1)
.[d1].Offset(n) = v(2)
.[e1].Offset(n) = v(3)
.[f1].Offset(n) = v(4)
.[h1].Offset(n) = v(5)
End With
Sheets("data entry").Range("e4,e6,e8,e10,e12").ClearContents
End Sub
为了补充你不应该使用。选择,这里有一个关于如何/为什么避免它的好信息。@BruceWayne谢谢,我正要去找那个参考。为了补充你不应该使用。选择,这里有一个关于如何/为什么避免它的好信息。@BruceWayne谢谢,我正要去找那个参考资料。要补充你不应该使用。选择,这里有一个关于如何/为什么避免它的好信息。@BruceWayne谢谢,我正要去找那个参考资料。要补充你不应该使用。选择,这里有一个关于如何/为什么避免它的好信息。@BruceWayne谢谢,我正要去找那个参考资料。