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
答案 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