Si que realiza un intercambio, pero es que no te has fijado en todo el código.
Código vb:
Ver originalsauxiliar = pArreglo(i)
pArreglo(i) = pArreglo(j)
pArreglo(j) = sauxiliar
Si te fijas, para realizar el intercambio utiliza una variable auxiliar llamada sauxiliar. En esta variable guardar el valor que se encuentra en la posicion i del vector. Luego asigna el valor de la posición j a la posición i y finalmente guarda el valor de la variable sauxiliar en la posicion i del vector.
Con todo esto lo que realiza es un intercambio de los valores.
Saludos.