Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将数据从一张工作表的表单输入到另一张工作表的日志中_Excel_Vba - Fatal编程技术网

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谢谢,我正要去找那个参考资料。