Значение переменной NumRows будет на 1 меньше, чем номер последней строки, потому что вы начинаете счетчик строк в строке 2. Это можно увидеть, если вы пошагово просматриваете код с помощью F8 и просматриваете переменную.
Это можно исправить разными способами.
использовать NumRows = Range("A1", Range("A2").End(xlDown)).Rows.Count
или используйте NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count + 1
или используйте For x = 2 To NumRows + 1