Write IEnumerator for Movement

I want to write an IEnumerator to move at the desire distance at specified time.

I have tried to write the code for this but this is running a different way.

        float moveDistance=1f;
        float moveSpeed=5f;
        float elapsedDistance = 0f;

        while (elapsedDistance <= moveDistance)
        {
            elapsedDistance += Time.deltaTime * moveSpeed;

            Vector3 cubeLocalPosition = transform.localPosition;
            cubeLocalPosition.y += Time.deltaTime * moveDistance;
            transform.localPosition = cubeLocalPosition;
            yield return null;
        }

Through this code, Object can’t able to travel 1 unit distance.
Please help me to correct this code.

Vector3 targetPosition = transform.position + Vector3.up * moveDistance;
float moveSpeed = 5f;

while (targetPosition != transform.position)
{
    transform.position = Vector3.MoveTowards(transform.position, targetPosition, moveSpeed * Time.deltaTime);
    yield return null;
}