Я столкнулся с проблемой, при которой специальные значения Excel VBA вставляют специальные значения, изменяя тип данных на текст, когда он выполняет операцию значений пасты, которая затем ломает нижестоящие формулы, которые ожидают увидеть число/дату вместо текста.Как предотвратить Excel VBA вставить специальные значения от изменения типа данных с номера/даты на текст
На высоком уровне процесса у меня есть следующий:
начиная с функциональным рабочим листом, дублировать и переименовать его;
выполняет операции над вновь созданным листом, включая копирование, вставка специальных значений;
формулы, которые зависят от вложенных данных, теперь разбиты, потому что тип данных был изменен на текст.
Код, который делает копию вставки специальных значений выглядит следующим образом:
Workbooks("myFile.xlsm").Sheets(pageFocus).Range(refreshCopyRange).Copy
Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial (xlPasteValues)
Есть ли какое-то модификатор или переопределить для PasteSpecial (xlPasteValues), который остановит Excel VBA от изменения данных тип?
Большое спасибо за любую помощь!
Я не могу воспроизвести вашу проблему с предоставленную вами информацию. Различные типы числовых данных остаются числовыми, когда я делаю код специальных значений для копирования/вставки. Пожалуйста, предоставьте достаточную информацию, чтобы воспроизвести вашу проблему. Я предлагаю вам прочитать [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Форматирование некоторых элементов может измениться, но они остаются числовыми, а не TExt –
Спасибо Рон. Оказывается, часть моей проблемы - исходная база данных (через API) несовместима с типами данных, возвращаемыми для «дат». Иногда API-вызов в базу данных возвращает номер/дату, а для других полей он возвращает текст. Я нашел другую дискуссию на форуме, которая заставила меня поверить, что виноваты такие специальные значения, как здесь: http://stackoverflow.com/questions/28000600/excel-paste-special-using-values-only-also-copies -the-data-type-of-the-value-al ... однако это проблема с базой данных в основном в моем случае. Поэтому я сделал формулы перевода после API, которые всегда делают число/дату. – RMF
Я бы подумал, что ссылка на НЕ будет надежным источником. Обратите внимание, что он имеет два downvotes, и в потоке нет заметного ответа. Что касается различных форматов, исходящих из вашего вызова API, частая причина этого заключается в том, что даты API действительны, но не в формате, который соответствует вашей региональной настройке Windows (например, mdy vs dmy). Когда это происходит, вы получаете сочетание текста, который выглядит как даты и реальные даты; фактические даты будут в основном ** неправильными **. например: «6/2/2017» из БД может быть «2 июня 2017 года», когда это должно быть «6 февраля 2017 года». Будьте осторожны, как вы переводите. –