奇怪的参数问题对于宏来说不是可选的

时间:2016-12-19 21:18:18

标签: excel-vba vba excel

我在尝试使用此代码时遇到问题。如果没有(ByValue Target as Range)部分以及ActiveCell.Value,它确实可以正常工作,但是如果包含这些部分,我会收到错误。

我有很多其他功能取决于此,并希望看到我能解决的问题。

非常感谢!

Private Sub CT(ByVal Target As Range)
'
' CT Macro
'

    Sheets("Outbound Tactics").Select
    If ActiveCell.Value = "Yes" Then
        ActiveCell.Select
        Range(Selection, ActiveCell.Offset(0, 23)).Select
        Selection.Copy
        Sheets("Completed Tactics").Select
        ActiveSheet.Range("C4").Select
        Selection.End(xlDown).Offset(1, 0).Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Select
        Application.CutCopyMode = False
        Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
        Sheets("Outbound Tactics").Select
        ActiveCell.Select
        Range(Selection, ActiveCell.Offset(0, 23)).Select
        Selection.Delete
    End If
End Sub

PS:根据我的理解,开头部分是为了让宏连续运行而不被调用。

1 个答案:

答案 0 :(得分:2)

看到你实际上没有在你的代码中使用Target对象,我假设你从某个地方复制/粘贴它,并且实际上并不确定它是什么。

简单回答:将其删除。

Private Sub CT()
'// your code here
End Sub

扩展答案:将其合并到您的代码中。

Private Sub CT(ByVal Target As Range)

    If Target.Value = "Yes" Then
        With Sheets("Completed Tactics").Range("C4").End(xlDown).Offset(1, 0)
            .Resize(1, 24).Value = Target.Resize(1, 24).Value
            .Offset(1, 0).EntireRow.Insert CopyOrigin:=xlFormatFromLeftOrAbove
        End With

        Target.Resize(1, 24).Delete

    End If
End Sub