如果输入日期,则将行从一张纸复制到另一张

时间:2014-07-14 18:43:30

标签: excel vba excel-vba

Massive excel noob,已经找到类似的回应,并试图将它应用到我自己的宏,但在VBA体验/知识方面可怜。应该是一个简单的解决方案!

如果列T中有日期,我基本上试图让数据从一张纸移动到另一张。我希望复制整行,然后从第一张纸上删除(以避免重复下次我点击按钮。当我运行这个时,我得到错误"参数不是可选的"。我理解这意味着我还没有在某个地方指定变量,但是我没有想法在哪里。请帮助!

Private Sub Move(ByVal Target As Range)
Dim nextRow As Long
If Not Intersect(Target, Range("T:T")) Is Nothing Then
    If VBA.IsDate(Target) Then
        With Worksheets("E+ Resolved")
            nextRow = IIf(VBA.IsEmpty(.Range("A1048576").End(xlUp)), 1, .Range("A1048576").End(xlUp).Row + 1)
            .Range("A" & nextRow) = Target.Offset(0, 0)
            .Range("B" & nextRow) = Target.Offset(0, 0)
            .Range("C" & nextRow) = Target.Offset(0, 0)
            .Range("D" & nextRow) = Target.Offset(0, 0)
            .Range("E" & nextRow) = Target.Offset(0, 0)
            .Range("F" & nextRow) = Target.Offset(0, 0)
            .Range("G" & nextRow) = Target.Offset(0, 0)
            .Range("H" & nextRow) = Target.Offset(0, 0)
            .Range("I" & nextRow) = Target.Offset(0, 0)
            .Range("J" & nextRow) = Target.Offset(0, 0)
            .Range("K" & nextRow) = Target.Offset(0, 0)
            .Range("L" & nextRow) = Target.Offset(0, 0)
            .Range("M" & nextRow) = Target.Offset(0, 0)
            .Range("N" & nextRow) = Target.Offset(0, 0)
            .Range("O" & nextRow) = Target.Offset(0, 0)
            .Range("P" & nextRow) = Target.Offset(0, 0)
            .Range("Q" & nextRow) = Target.Offset(0, 0)
            .Range("R" & nextRow) = Target.Offset(0, 0)
            .Range("S" & nextRow) = Target.Offset(0, 0)
            .Range("T" & nextRow) = Target.Offset(0, 0)
            .Range("U" & nextRow) = Target.Offset(0, 0)

        End With
    End If
End If
End Sub

1 个答案:

答案 0 :(得分:0)

您收到错误“Argument not optional”,因为调用您的Sub Move的任何内容未指定参数Target

在您的代码中搜索您调用Sub Move的位置。如果可以重现错误,单击错误对话框中的Debug会转到包含错误的VBA代码行。

请注意,您无法将Sub Move直接绑定到按钮,因为它是一个带参数的Sub。按钮单击事件无法提供参数,这就是为什么它们只能绑定到没有参数的Subs。如果这是你想要做的,你应该创建单独的Subs,它可以绑定到按钮,例如。

Sub Button1Clicked()
    Move Sheet1.Range("A1:Z999")
End Sub