私はかなりシンプルなはずだと感じている問題を抱えていますが、それはうまく動作しません。私はそれが私がやっていることだと確信していますが、私はあなたの専門家の助けが必要です。私は単にデータテーブルを循環し、データテーブルの別の列に値が再び現れているかどうかを確認しています。何らかの理由でBOTHステートメントが実行され、elseステートメントがIfステートメントを上書きしています。ブロックがIfとElseステートメントの両方を実行している場合
For i = 0 To length - 1
For j = 0 To length - 1
If Trim(dt.Rows(i)(0)) = Trim(dt.Rows(j)(6)) Then
need_dt.Rows(i)(9) = "COMP"
need_dt.Rows(i)(10) = Format(resource.AddWorkingDays(need_dt.Rows(i)(2), -5), "MM/dd/yy")
Else
need_dt.Rows(i)(9) = "TOP"
need_dt.Rows(i)(10) = Format(resource.AddWorkingDays(need_dt.Rows(i)(2), -16), "MM/dd/yy")
End If
If Year(need_dt.Rows(i)(10)) = 2029 Then need_dt.Rows(i)(10) = Format(resource.AddWorkingDays(Now, 14), "MM/dd/yyyy")
Next
Next
ようこそ!サンプルデータも投稿できますか?できるだけループごとに読みやすくするために、インデックスを使用して列にアクセスする代わりに、列名を使用します。たとえば、myRow( "myColumn")です。データテーブル内の行を検索するには、[select-method](https://msdn.microsoft.com/en-us/library/det4aw50(v = vs.110).aspx)またはLinq。 – Esko
私が最初に推測したのは、 'j 'の反復の1つで、' Trim(dt.Rows(i)(0)) '<>' Trim(dt.Rows(j)(6)) 'もう一方は両方とも "発火"するように見える – OSKM
内側のループをFor j = i + 1のようにしてみてください。長さ-1にしてください。 –