コードでデバッグすると、値が正しい形式であることがわかります。値のみを取得して設定するだけで、データを通常の文字列ではなく日時として取得するようです。NumberFormatを使用して、次のいずれかにフォーマットしようとしますこのうち 1 つ (@、テキスト、数字、一般) どちらも機能していません。
ActiveSheet.Range("D" & i).Value = arr(i, 4)
更新 1 arr については言及せずに申し訳ありませんが、arr は多次元配列です。読み取った列を格納します。Excel から値を取得し、ループによって範囲内に格納します。