Использование Application.International (xlListSeparator) при создании формулы для источника данных - PullRequest
0 голосов
/ 07 апреля 2020

В Excel 2013 я использую список данных (например, rng.Valadation.Type = xlValidateList равен 3)

На листе я создал рабочую формулу

OFFSET(Criteria_Evaluatie;0;1;ROWS(Criteria_Evaluatie);1)

Используя VBA, я закодировал

txtFormula = "OFFSET(Criteria_Evaluatie;0;1;ROWS(Criteria_Evaluatie);1)"
rng.Validation.Add xlValidateList, xlValidAlertStop, xlBetween, txtFormula

вызывая ошибку при отладке

Я обнаружил, что:

a) Ввод (OFFSET (nameCriteria; 0; 1; ROWS (nameCriteria); 1) ТРЕБУЕТСЯ при вводе источника в EXCEL - Окно проверки данных

b), но СБОИ при вводе с использованием VBA (заботятся о конкатенации)

c) Использование: txtFormula = "= OFFSET (" & nameCriteria & ", 0,1, ROWS (" & nameCriteria & "), 1)" из VBA работает

d), а ',' будет автоматически преобразовано в ';' EXCEL - окно проверки данных!

txtFormula = "=OFFSET(" & nameCriteria & ",0,1,ROWS(" & nameCriteria & "),1)"     

работает из VBA, но НЕ, если введено в поле Проверка данных - источник

при извлечении формулы из VBA с использованием

txtSource = rng.Validation.Formula1

OFFSET (Criteria_Evaluatie; 0; 1; ROWS (Criteria_Evaluat ie); 1) будет получено, но это не может быть использовано в

set rng = Range(txtSource)

Мне нужно преобразовать это обратно в OFFSET (Criteria_Evaluat * 1045) *, 0,1, ROWS (Criteria_Evaluat ie), 1) перед использованием его в качестве ссылки в формуле.

Поэтому я пришел к выводу, что мне нужно проверить XlApplicationInternational и преобразовать разделители, если я хочу используйте формулы в VBA.

Конечно, я могу использовать

txtsource = Replace(txtSource, Application.International(xlListSeparator), ",")

и

txtsource = Replace(txtSource, ",", Application.International(xlListSeparator))

, но это МОЖЕТ вызвать проблемы, если "," использовался как часть текст в кавычках в формуле (например, «Мне нравится ходить, ездить на велосипеде и читать»)

Поэтому мой вопрос заключается в том, как обеспечить, чтобы ТОЛЬКО необходимые замены были сделаны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...