2017-07-13 11 views
2

現在、プロジェクト計画を見て作業努力はゼロですが、作業計画を見ていない作業をすべて削除するVBAコードを作成しようとしています私の計画からのマイルストーン。キーマイルストーンと呼ばれるカスタムフィールドを追加して、タスクがマイルストーンであるかどうかをキャプチャしました。既存のマイルストーンフィールドを使用していない理由は、作業労力がゼロで期間がゼロのタスクのすべてが必ずマイルストーンであるとは限らないためです。MS Project VBAコードでゼロ作業作業を削除する作業カスタムフィールドを条件として使用する

以前はVBAのGetField関数に慣れていませんでしたが、このコードの一部としてカスタムフィールドを読み込むために、これを組み込む際にいくつかの試みを行ってきました。ここまでは、これまでの内容です:

Sub DeleteMsProjectTask() 
Dim proj As Project 
Dim t As Task 
Set proj = ActiveProject 
For Each t In proj.Tasks 
If t.OutlineLevel > 1 And t.Work = 0 Then 
If GetField(FieldNametoFieldConstant("Key Milestone") = Yes Then 
Else 
t.Delete 
End If 
End If 
Next t 
End Sub 

マイルストーンフィールドが正しく読み込まれないため、これは正しく動作しません。助けを前にありがとう!

答えて

1

GetFieldmethod of the Task objectであるため、タスクオブジェクト変数を前もって入力する必要があります。 t.GetField。また、閉じ括弧も見逃しました。また、GetFieldは文字列を返すので、文字列と比較する必要があります。言い換えれば、単語は「引用符で囲む」必要があります。削除の基準は実際には「いいえ」の値なので、コードを簡略化しました。

Sub DeleteMsProjectTask() 
Dim proj As Project 
Dim t As Task 
Set proj = ActiveProject 
For Each t In proj.Tasks 
    If t.OutlineLevel > 1 And t.Work = 0 Then 
     If t.GetField(FieldNameToFieldConstant("Key Milestone")) = "No" Then 
      t.Delete 
     End If 
    End If 
Next t 
End Sub 
+1

ありがとうございました!これはうまくいった。 – AJ123

関連する問題