Я изменил 1 строку в функции:
X_FIND = X_FIND & "," & m.value
Я проверил функцию с входами:
Mid(X_FIND("999-999-9998 abckd 999-999-9999", "[0-9]{3}-[0-9]{3}-[0-9]{4}"),2)
Возвращает строку:
999-999-9998,999-999-9999
Если есть возможность дублирования телефонных номеров, используйте шаблон:
"([0-9]{3}-[0-9]{3}-[0-9]{4})(?!.*?\1.*$)"
Будет возвращено только последнее совпадение каждого уникального значения.
Если вы хотите убедиться, что возвращаемые значения находятся в порядке возрастания, потребуется больше кода, что непросто, насколько я вижу, и включает запись уникальных совпадений в массив (это легко с функцией Split) или сбор и применение пузырьковая сортировка или какой-либо другой алгоритм (это сложная часть).