>>455
■重大なバグ
×If Arr(J) > A(J + 1) Then
○If Arr(J) > Arr(J + 1) Then

×Swap A(J), A(J + 1)
○Swap Arr(J), Arr(J + 1)

■非効率的な処理
× For I = 0 To UBound(Arr)
    For J = 0 To UBound(Arr) - 1

○ u = UBound(Arr)
   For I = 0 To u
    For J = 0 To u - 1

>>455のコードだと、配列要素数が10000なら、
  UBoundによる配列上限取得を10001回行うことになり、非効率的
  1行程度コードが増えても処理量を減らすのが基本(特にループ内では)

■その他
Option Explicitを付けて、変数を宣言する

※それをしなくてもバグの無いコードが書けるなら使わないのは勝手だが
  現に「 Arr 」を「 A 」と書いてしまって、致命的なバグを生じさせているので
  そのレベルの人はOption Explicitを使うクセを付けること

上記の指摘に沿って開き直したものが「これ(>>455)に勝てるコード」だ