私はMS Projectで開発されたカスタムアプリケーションを持っています。関数の1つを実行しているときに、コードの一部がスキップされ、結果が正しく出力されません。以下は、エラーを引き起こし、アプリケーションを先にスキップさせるコード行です。誰でもそれを引き起こす可能性があることを知っていますか?ここでコード部分(VBA)がスキップされています
FilterEdit Name:="fCriteria", TaskFilter:=True, Create:=True, _
OverwriteExisting:=True, FieldName:="Flag20", test:="equals", _
Value:="No", ShowInMenu:=False, ShowSummaryTasks:=True
これは、それが「スキップされて申し訳ありません...
理由...あなたが望んだとして有用であることを行っていない全体のサブルーチン
If keepCriteriaCount > 0 And globRemProducts = True Then
Application.ScreenUpdating = False
WindowActivate WindowName:=globNewWindow
TableApply Name:="Master Template"
FilterApply Name:="All Tasks"
Application.SetAutoFilter FieldName:="Flag20", FilterType:=pjAutoFilterClear
SelectSheet
SetTaskField Field:="Flag20", Value:="No"
SelectTaskField Row:=0, Column:="Flag20", Height:=0
EditCopy
SelectTaskColumn Column:="Flag20"
FillDown
keepCriteriaArray() = Split(keepCriteria, ",")
fCount = 0
'Remove Tasks for excluded Products
For dCriteria = LBound(keepCriteriaArray) To UBound(keepCriteriaArray)
If Not keepCriteriaArray(dCriteria) = "" Then
If Len(Trim(keepCriteriaArray(dCriteria))) = 2 Then
projChannels = Trim(keepCriteriaArray(dCriteria)) & ","
Else
projChannels = Trim(keepCriteriaArray(dCriteria))
End If
If fCount = 0 Then
FilterEdit Name:="fCriteria", TaskFilter:=True, Create:=True, OverwriteExisting:=True, FieldName:="Text24", test:="contains", Value:=projChannels, ShowInMenu:=False, ShowSummaryTasks:=False
FilterEdit Name:="fCriteria", TaskFilter:=True, FieldName:="", NewFieldName:="Text24", test:="contains", Value:="All", Operation:="OR", ShowSummaryTasks:=False
fCount = fCount + 1
Else
projChannels = Trim(keepCriteriaArray(dCriteria))
FilterEdit Name:="fCriteria", TaskFilter:=True, FieldName:="", NewFieldName:="Text24", test:="contains", Value:=projChannels, Operation:="OR", ShowSummaryTasks:=False
End If
End If
Next dCriteria
FilterApply Name:="fCriteria" ' apply the filter
SelectSheet
tCount = ActiveSelection.Tasks.Count
SelectSheet
SetTaskField Field:="Flag20", Value:="Yes"
SelectTaskField Row:=0, Column:="Flag20", Height:=0
EditCopy
SelectTaskColumn Column:="Flag20"
FillDown
FilterApply Name:="All Tasks"
Application.SetAutoFilter FieldName:="Flag20", FilterType:=pjAutoFilterClear
If addCriteriaCount = 0 Then
tCriteria = projChannels & "; " & globStoreChannels & "; " & txtCustType.Value
Else
tCriteria = addCriteria & ", " & projChannels & "; " & globStoreChannels & "; " & txtCustType.Value
End If
'WindowActivate WindowName:=globNewWindow
TableApply Name:="Master Template"
tskHeaderRow = 1
SelectTaskField Row:=tskHeaderRow, Column:="Text4"
SetTaskField Field:="Text4", Value:=tCriteria
'before you delete - outdent all tasks
SelectSheet
For rLevel = ActiveSelection.Tasks.Count To 1 Step -1
SelectTaskField Row:=rLevel, Column:="Name", RowRelative:=False
OutlineOutdent
OutlineOutdent
OutlineOutdent
OutlineOutdent
Next rLevel
'If Not ActiveProject.AutoFilter Then Application.AutoFilter
'Group
On Error Resume Next
'Application.SetAutoFilter FieldName:="Flag20", FilterType:=pjAutoFilterCustom, Test1:="contains", Criteria1:="No"
FilterEdit Name:="fCriteria", TaskFilter:=True, Create:=True, OverwriteExisting:=True, FieldName:="Flag20", test:="equals", Value:="No", ShowInMenu:=False, ShowSummaryTasks:=True
FilterApply Name:="fCriteria" ' apply the filter
SelectSheet
On Error GoTo removeErr
If ActiveSelection.Tasks.Count >= 1 Then
SelectSheet
EditDelete
End If
私はMS Projectに精通していませんが、多くのコーディング経験があります。通常、「スキップする」のようなものでは、より多くのコンテキスト(より多くのコード)を見ることが重要です。質問の下にある[編集]リンクを使用して、コードを追加できます。 –
あなたがスキップしたと言うとき、これはあなたがそれが道だと言っているトラップを持っていることを意味するのでしょうか、それともデバッグして、それを動かすのでしょうか? –
エラーがあれば、次のルーチンに送信するコード行があります – BLUMan