2016-12-19 9 views
1

このコードを動作させるのに問題があります。 ActiveCell.Valueと共に(ByValue Target as Range)部分がなくても意図どおりに動作しますが、これらを含めて、エラーが表示されています。マクロのオプションの奇妙な問題

私はこれに応じて他の多くの機能を備えており、修正できることを確認したいと考えています。

ありがとうございます!

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:私が理解から、最初の部分が連続で呼び出されることなく、マクロの実行を持つためにあり

+2

どのようにサブを呼びますか?サブを呼び出すときには範囲を渡す必要があります。:CT(Range( "A1")) 'または何もしないので削除します。別のノートでは、selectを使わないでください。参照してください:http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros –

+0

それは全く変わっていません。マクロに指示する場合は、作業するためのターゲットが必要です。マクロを呼び出すたびにマクロを導入する必要があります。あなたのコードを見ることで、これまで使用されていないTargetが入力として必要なことはありません。 [詳細はこちら](http://www.functionx.com/vbaexcel/functions/Lesson3.htm) – Sgdva

+1

Worksheet_Changeイベントの名前を変更することはできません - 私はあなたが行ったことを推測していますか? – SJR

答えて

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 
+0

私はこれがOPへの適切な答えかもしれないとは確信していませんが、OPの広報のために部分的なので、私はdownvoteしません。 – Sgdva

+0

お詫び申し上げますが、それがそこにある理由は、このマクロがそれに逆戻りすることなく継続的に実行されることが必要なためです。 –

+1

@Sgdvaエラーの理由は、Subを呼び出すときに 'Target'が指定されていないからです。なぜなら、サブサブ内で実際に使われていないからです。私はそれが適切な答えではないかどうか分からないのですか? –