Excel проверка данных не работает при копировании
Проверка проверки данных не выполняется, если вы копируете/вставляете значение в ячейку с проверкой данных. • То же самое, если вы поместите проверку данных в ячейку, в которой уже есть данные (тогда она также не будет проверять данные). Проверка данных проверяется только в том случае, если вы записываете данные вручную (по действию пользователя). Даже ввод данных с помощью VBA не запускает проверку данных.
Не проверка данных как таковая. Но как я могу преодолеть эту проблему?
Я разместил альтернативный способ встроенной проверки данных. Это сложнее, но может обрабатывать действия копирования/вставки.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 2
Это известная проблема с Excel. Проверка данных не работает, если пользователь вставляет значение в ячейку.
Однако вы можете предотвратить вставку, по крайней мере, с помощью Ctrl + v. Введите следующее в модуль ThisWorkbook в редакторе VBA:
Это делает так, что когда вы активируете книгу, Ctrl+v ничего не делает. Затем, если вы работаете с несколькими книгами и хотите использовать Ctrl+v в другом месте, поведение сбрасывается до нормального при деактивации этой книги.
Рассмотрим сценарий, в котором приток данных огромен. В этом случае копипаста — единственный выход.
Проверка данных никогда не предназначалась для работы с пользователями, копирующими и вставляющими огромные объемы данных из внешних источников. Если ваш метод основан на том, что это делают пользователи, я бы предложил отказаться от проверки, но использовать условное форматирование: например, вы можете выделить ячейку красным цветом, где значение выходит за пределы ваших параметров, чтобы вручную указать пользователю, что что-то не так. ожидал.
Обходной путь, поскольку проверка данных не работает с копированием/вставкой
Удаление проверки данных Excel и замена ее собственной проверкой может стать решением вашей проблемы.
Это позволяет вам выполнять собственные проверки. И если были вставлены недействительные данные, мы просто .Undo вставляем действие. Таким образом, могут быть вставлены только полностью достоверные данные.
Обратите внимание, что решение выше имеет один большой недостаток
Диапазоны проверки жестко закодированы в коде VBA. Если вы, например, установите правило проверки для столбца C, а затем вставите столбец перед этим столбцом C, он переместится в D, но правила проверки по-прежнему применяются к C.
Чтобы избежать этой проблемы, вы можете использовать Именованные диапазоны вместо жестко заданных диапазонов. Итак, вы определяете диапазон на своем листе и, например. назовите его Rule1 (лучше выбрать осмысленное имя вместо правил нумерации). Например, отметьте столбец C и дайте ему имя.
Затем вы можете использовать это имя в…
… и теперь правила будут придерживаться именованного диапазона, и вы можете вставлять и перемещать свои диапазоны по своему усмотрению.
Хорошее решение с Intersect и Undo ! Поскольку мое простое предложение Select Case Target.Address будет работать только в том случае, если вставлена ровно 1 ячейка, я удалю свой ответ :)
Можете ли вы помочь мне с проверкой данных для десятичных данных? Например, столбец должен содержать число длиной 9 с 2 десятичными разрядами.
@ThanujaReddy Не могли бы вы опубликовать это как новый вопрос? Включите код, который вы уже пробовали, и расскажите, где вы застряли. Проблема здесь в том, что мы не можем ответить на это в комментариях, а на исходный вопрос уже дан ответ. Так что просто откройте новый.
@Pᴇʜ есть проблема с этим кодом. Предположим, если я скопирую набор данных с другого листа Excel, часть данных может не соответствовать условию проверки данных. В этом сценарии использование этого кода отменяет все данные, включая данные, следующие за условием. Как мы можем преодолеть это?
@BtR Нет. Выборочной отмены нет. Таким образом, он может выполнять только полную отмену и сообщать пользователю, чтобы его данные были полностью действительными перед вставкой, чтобы можно было вставить только полностью действительные данные. • Если вам нужно выбрать из источника только действительные данные, вам потребуется совершенно другой подход, при котором VBA сначала проверяет исходные данные и копирует только действительные данные с помощью VBA (таким образом, копирует VBA, а не пользователь). Но обратите внимание, что вы должны уведомить пользователя, чьи недопустимые данные были скопированы нет, иначе пользователь не заметит, что он «теряет» данные во время процесса.
@Pᴇʜ Не могли бы вы рассказать мне о том, как «VBA сначала проверяет исходные данные и копирует действительные данные» на примере сценария?
@ На этот вопрос нельзя ответить в комментарии, и задавать этот вопрос было бы не по теме. Попробуйте сами, если вы застряли, опубликуйте свой код и задайте ему новый вопрос. Вы могли бы попытаться сделать что-то вроде этого: прокрутите исходные данные, проверьте каждую строку/ячейку, если она недействительна, удалите ее и скопируйте остальные, или, если она действительна, скопируйте только действительные. Тем не менее я рекомендую отмечать недействительные для пользователя.
У меня есть 5 разных столбцов на моем листе excel и каждый из них имеет отдельные правила проверки данных. Мои правила работают, когда пользователь вручную вводит клавиатуру.
Но при копировании данных из разных источников, таких как notepad , one note и т.д. Моя проверка не работает. Только он работает, когда вы нажимаете на cell индивидуально.
Пример. Мои столбцы похожи на: Name, Employee ID, Plan ID, Client Name, Email ID Д.
Мне нужен какой-то VBA или формула, где моя проверка данных автоматически работает, когда пользователь копирует/вставляет данные из другого источника.
проверка подпрограммы в списке в нормальном модуле:
и еще один для проверки, если значение вставлено между двумя длинами:
Затем следует использовать один малый макрос в листе, когда необходимо использовать валидацию:
Я предположил, что первый столбец должен быть проверен против некоторого списка, а второй - между 1000000 и 9999999. Но вы можете его соответствующим образом изменить. Как вы можете видеть, я не использую проверку excel - это может быть непреднамеренно перезаписано пользователем при вставке. Я сделал макросы, чтобы заполнить недействительную ячейку желтым цветом, но вы можете приказать ей сделать что-то еще. Я бы не рекомендовал msgbox, если вы думаете, что кто-то может попытаться вставить 1000 или более значений.
Да, я столкнулся с той же проблемой. Я решил это, вообще заблокировав приклеивание. В модуле у меня есть код:
Затем в тексте рабочего листа я поставил:
Как вы можете видеть, я также отключил панель формул, чтобы предотвратить прямое копирование в нее пользователя. Меня устраивает.
Еще в рубрике
В чем разница в java.lang.OutOfMemory: превышение верхнего предела GC превышено против java.lang.OutOfMemory: прослушиватель многоадресной рассылки
Другие вопросы
Как изменить путь сохранения/сохранения по умолчанию для нашего определенного пути в любых браузерах? Сохранить/Сохранить как всплывающую функциональность?
Примечание: Это расширенная статья о проверке данных. Общие сведения о проверке данных, а также сведения о проверке данных в ячейке или диапазоне см. в статье Добавление проверки данных в ячейку или диапазон ячеек.
Проверка данных используется для ограничения типа данных или значений, которые можно вводить в ячейку. Например, ее можно применять для расчета максимального разрешенного значения в ячейке на основе значения в другой ячейке книги. В приведенном ниже примере пользователь ввел в ячейку значение "абв", которое является для нее недопустимым.
Ситуации, в которых полезно использовать проверку данных
Проверка данных незаменима в том случае, если необходимо предоставить общий доступ к книге другим пользователям и обеспечить точность и согласованность вводимых данных. Кроме всего прочего, проверку данных можно использовать в следующих целях:
Ограничение данных предопределенными элементами списка: например, можно ограничить выбор отдела значениями "Бухгалтерия", "Финансовый отдел", "Отдел кадров" и т. д.
Ограничение использования чисел за пределами указанного диапазона: например, можно указать максимальный процент годового роста зарплаты сотрудника (например, 3 %) или разрешить только целое число от 1 до 100.
Ограничение дат, находящихся за пределами определенного промежутка времени: например, можно предотвратить выбор даты, которая предшествует текущей, при запросе отгула.
Ограничение времени, которое находится за пределами определенного промежутка времени: например, вы можете указать, что собрания должны проводиться в период между 8:00 и 17:00.
Ограничение количества текстовых знаков: например, можно разрешить ввод не более 10 знаков в ячейку.
Когда пользователи привыкнут к вводу данных, вы можете снять флажок Отображать подсказку, если ячейка является текущей.
Предотвращает ввод недопустимых данных в ячейку.
Предупреждает пользователей о том, что введенные данные недопустимы, но не препятствует их вводу.
Когда появляется предупреждение, пользователь может нажать кнопку Да, чтобы принять недопустимый ввод, кнопку Нет , чтобы изменить введенные данные, или кнопку Отмена, чтобы удалить недопустимую запись.
Советы по использованию проверки данных
Обратите внимание на советы и рекомендации по использованию проверки данных в Excel.
Примечание: Если вы хотите использовать проверку данных в книгах в Службы Excel или Excel Web App, сначала потребуется создать ее в классическом приложении Excel.
Ширина раскрывающегося списка определяется шириной ячейки, для которой применяется проверка данных. Возможно, вам потребуется увеличить ее, чтобы не обрезать допустимые записи, ширина которых больше ширины раскрывающегося списка.
Если необходимо защитить лист или книгу, выполните это действие после настройки параметров проверки. Перед тем как защитить лист, убедитесь, что разблокированы любые ячейки, которые необходимо проверить. В противном случае пользователям не удастся ввести данные в ячейки. См. статью Защита листа.
Если требуется открыть общий доступ к книге, можно сделать это после настройки проверки данных. Если книга открыта для общего доступа, изменение параметров проверки данных невозможно, пока не будет отменен общий доступ.
Можно применить поверку данных к ячейкам, в которые уже введены данные. Однако в приложении Excel отсутствует возможность автоматического уведомления о том, что в существующих ячейках имеются недопустимые данные. В этом случае можно выделить недопустимые данные на листе с помощью кругов. Когда недопустимые данные найдены, круги можно скрыть. При исправлении недопустимых данных они исчезают автоматически.
Чтобы обвести данные, выделите нужные ячейки и выберите Данные > Работа с данными > Проверка данных > Обвести неверные данные.
Чтобы быстро отменить проверку данных в ячейке, выделите ее и выберите Данные > Работа с данными > Проверка данных > Параметры > Очистить все.
Чтобы найти ячейки на листе, для которых включена проверка данных, на вкладке Главная в группе элементов Правка выберите пункт Найти и выделить, а затем нажмите кнопку Проверка данных. После того как найдены ячейки, для которых включена проверка данных, можно изменить, скопировать или удалить параметры проверки данных.
Для создания раскрывающегося списка можно воспользоваться командой Присвоить имя (на вкладке Формулы в группе Определенные имена), которая позволяет определить имя для диапазона, содержащего список. После создания списка на другом листе можно скрыть лист, который содержит список, а затем защитить книгу, чтобы пользователи не смогли получить доступ к этому списку.
Если вы измените параметры проверки одной ячейки, вы можете автоматически применить изменения ко всем остальным ячейкам, имеющим такие же параметры. Для этого на вкладке Параметры установите флажок Распространить изменения на другие ячейки с тем же условием.
Если проверка данных не работает, проверьте указанные ниже условия.
Выключен пересчет вручную. Если включен пересчет вручную, невычисляемые ячейки могут повлиять на правильность проверки данных. Чтобы отключить пересчет вручную, откройте вкладку Формулы, в группе Вычисление выберите Параметры вычислений и щелкните параметр Автоматически.
Возможно, таблица Excel связана с сайтом SharePoint. В таблицу Excel, которая связана с сайтом SharePoint, добавить проверку данных невозможно. Чтобы добавить проверку данных, необходимо удалить связь таблицы Excel или преобразовать ее в диапазон.
Возможно, в настоящее время вводятся данные. Во время ввода данных в ячейку команда "Проверка данных" недоступна. Нажмите клавишу ВВОД, чтобы завершить ввод данных, или ESC, чтобы отменить его.
Возможно, лист защищен или является общим. Если книга защищена или используется совместно, изменить параметры проверки данных невозможно. Необходимо сначала отменить общий доступ или снять защиту книги.
Обновление или удаление проверки данных в книге, созданной другим пользователем
Если вы получили книгу с проверкой данных от другого пользователя и лист не защищен паролем, вы можете изменить или удалить проверку. Если лист защищен и вы не знаете пароль, обратитесь к его прежнему владельцу, так как в Excel невозможно восстановить потерянные пароли. Вы также можете скопировать данные на другой лист и удалить проверку данных.
Если при попытке ввести данные в ячейку или изменить их выводится предупреждение и вы не знаете точно, что вы можете вводить, обратитесь к владельцу книги.
У вас есть вопрос об определенной функции?
Помогите нам улучшить Excel
У вас есть предложения по улучшению следующей версии Excel? Если да, ознакомьтесь с темами на портале пользовательских предложений для Excel.
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще. Меньше
Проверка данных позволяет ограничить тип данных или значения, которые можно ввести в ячейку. Чаще всего она используется для создания раскрывающихся списков.
Проверьте, как это работает!
Выделите ячейки, для которых необходимо создать правило.
Выберите Данные > Проверка данных.
На вкладке Параметры в списке Тип данных выберите подходящий вариант:
Целое число, чтобы можно было ввести только целое число.
Десятичное число, чтобы можно было ввести только десятичное число.
Список, чтобы данные выбирались из раскрывающегося списка.
Дата, чтобы можно было ввести только дату.
Время, чтобы можно было ввести только время.
Длина текста, чтобы ограничить длину текста.
Другой, чтобы задать настраиваемую формулу.
В списке Значение выберите условие.
Задайте остальные обязательные значения с учетом параметров Тип данных и Значение.
Нажмите ОК.
Скачивание примеров
Ограничение ввода данных
Выделите ячейки, для которых нужно ограничить ввод данных.
На вкладке Данные щелкните Проверка данных > Проверка данных.
Примечание: Если команда проверки недоступна, возможно, лист защищен или книга является общей. Если книга является общей или лист защищен, изменить параметры проверки данных невозможно. Дополнительные сведения о защите книги см. в статье Защита книги.
В поле Тип данных выберите тип данных, который нужно разрешить, и заполните ограничивающие условия и значения.
Примечание: Поля, в которых вводятся ограничивающие значения, помечаются на основе выбранных вами данных и ограничивающих условий. Например, если выбран тип данных "Дата", вы сможете вводить ограничения в полях минимального и максимального значения с пометкой Начальная дата и Конечная дата.
Запрос для пользователей на ввод допустимых значений
Выделите ячейки, в которых для пользователей нужно отображать запрос на ввод допустимых данных.
На вкладке Данные щелкните Проверка данных > Проверка данных.
Примечание: Если команда проверки недоступна, возможно, лист защищен или книга является общей. Если книга является общей или лист защищен, изменить параметры проверки данных невозможно. Дополнительные сведения о защите книги см. в статье Защита книги.
На вкладке Подсказка по вводу установите флажок Отображать подсказку, если ячейка является текущей.
На вкладке Данные щелкните Проверка данных > Проверка данных.
Примечание: Если команда проверки недоступна, возможно, лист защищен или книга является общей. Если книга является общей или лист защищен, изменить параметры проверки данных невозможно. Дополнительные сведения о защите книги см. в статье Защита книги.
Выполните одно из следующих действий.
В контекстном меню Вид выберите
Требовать от пользователей исправления ошибки перед продолжением
Предупреждать пользователей о том, что данные недопустимы, и требовать от них выбора варианта Да или Нет, чтобы указать, нужно ли продолжать
Предупреждение
Добавление проверки данных в ячейку или диапазон ячеек
Примечание: Первые два действия, указанные в этом разделе, можно использовать для добавления любого типа проверки данных. Действия 3–7 относятся к созданию раскрывающегося списка.
Выделите одну или несколько ячеек, к которым нужно применить проверку.
На вкладке Данные в группе Работа с данными нажмите кнопку Проверка данных.
На вкладке Параметры в поле Разрешить выберите Список.
В поле Источник введите значения списка, разделенные запятыми. Например, введите Низкий,Средний,Высокий.
Убедитесь, что установлен флажок Список допустимых значений. В противном случае рядом с ячейкой не будет отображена стрелка раскрывающегося списка.
Чтобы указать, как обрабатывать пустые (нулевые) значения, установите или снимите флажок Игнорировать пустые ячейки.
После создания раскрывающегося списка убедитесь, что он работает так, как нужно. Например, можно проверить, достаточно ли ширины ячеек для отображения всех ваших записей.
Отмена проверки данных. Выделите ячейки, проверку которых вы хотите отменить, щелкните Данные > Проверка данных и в диалоговом окне проверки данных нажмите кнопки Очистить все и ОК.
В таблице перечислены другие типы проверки данных и указано, как применить их к данным на листе.
Разрешить вводить только целые числа из определенного диапазона
Выполните действия 1–2, указанные выше.
В списке Разрешить выберите значение Целое число.
В поле Данные выберите необходимый тип ограничения. Например, для задания верхнего и нижнего пределов выберите ограничение Диапазон.
Введите минимальное, максимальное или определенное разрешенное значение.
Можно также ввести формулу, которая возвращает числовое значение.
Например, допустим, что вы проверяете значения в ячейке F1. Чтобы задать минимальный объем вычетов, равный значению этой ячейки, умноженному на 2, выберите пункт Больше или равно в поле Данные и введите формулу =2*F1 в поле Минимальное значение.
Разрешить вводить только десятичные числа из определенного диапазона
Выполните действия 1–2, указанные выше.
В поле Разрешить выберите значение Десятичный.
В поле Данные выберите необходимый тип ограничения. Например, для задания верхнего и нижнего пределов выберите ограничение Диапазон.
Введите минимальное, максимальное или определенное разрешенное значение.
Можно также ввести формулу, которая возвращает числовое значение. Например, для задания максимального значения комиссионных и премиальных в размере 6% от заработной платы продавца в ячейке E1 выберите пункт Меньше или равно в поле Данные и введите формулу =E1*6% в поле Максимальное значение.
Примечание: Чтобы пользователи могли вводить проценты, например "20 %", в поле Разрешить выберите значение Десятичное число, в поле Данные задайте необходимый тип ограничения, введите минимальное, максимальное или определенное значение в виде десятичного числа, например 0,2, а затем отобразите ячейку проверки данных в виде процентного значения, выделив ее и нажав кнопку Процентный формат на вкладке Главная в группе Число.
Разрешить вводить только даты в заданном интервале времени
Выполните действия 1–2, указанные выше.
В поле Разрешить выберите значение Дата.
В поле Данные выберите необходимый тип ограничения. Например, для разрешения даты после определенного дня выберите ограничение Больше.
Введите начальную, конечную или определенную разрешенную дату.
Вы также можете ввести формулу, которая возвращает дату. Например, чтобы задать интервал времени между текущей датой и датой через 3 дня после текущей, выберите пункт Между в поле Данные, потом введите =СЕГОДНЯ() в поле Дата начала и затем введите =СЕГОДНЯ()+3 в поле Дата завершения.
Разрешить вводить только время в заданном интервале
Выполните действия 1–2, указанные выше.
В поле Разрешить выберите значение Время.
В поле Данные выберите необходимый тип ограничения. Например, для разрешения времени до определенного времени дня выберите ограничение меньше.
Укажите время начала, окончания или определенное время, которое необходимо разрешить. Если вы хотите ввести точное время, используйте формат чч:мм.
Например, если в ячейке E2 задано время начала (8:00), а в ячейке F2 — время окончания (17:00) и вы хотите ограничить собрания этим промежутком, выберите между в поле Данные, а затем введите =E2 в поле Время начала и =F2 в поле Время окончания.
Разрешить вводить только текст определенной длины
Выполните действия 1–2, указанные выше.
В поле Разрешить выберите значение Длина текста.
В поле Данные выберите необходимый тип ограничения. Например, для установки определенного количества знаков выберите ограничение Меньше или равно.
В данном случае нам нужно ограничить длину вводимого текста 25 символами, поэтому выберем меньше или равно в поле Данные и введем 25 в поле Максимальное значение.
Вычислять допустимое значение на основе содержимого другой ячейки
Выполните действия 1–2, указанные выше.
В поле Разрешить выберите необходимый тип данных.
В поле Данные выберите необходимый тип ограничения.
В поле или полях, расположенных под полем Данные, выберите ячейку, которую необходимо использовать для определения допустимых значений.
Например, чтобы допустить ввод сведений для счета только тогда, когда итог не превышает бюджет в ячейке E1, выберите значение Число десятичных знаков в списке Разрешить, ограничение "Меньше или равно" в списке "Данные", а в поле Максимальное значение введите >= =E1.
В примерах ниже при создании формул с условиями используется настраиваемый вариант. В этом случае содержимое поля "Данные" не играет роли.
Представленные в этой статье снимки экрана созданы в Excel 2016, но функции аналогичны Excel в Интернете.
Введите формулу
Значение в ячейке, содержащей код продукта (C2), всегда начинается со стандартного префикса "ID-" и имеет длину не менее 10 (более 9) знаков.
=И(ЛЕВСИМВ(C2;3)="ID-";ДЛСТР(C2)>9)
Ячейка с наименованием продукта (D2) содержала только текст.
Значение в ячейке, содержащей чью-то дату рождения (B6), было больше числа лет, указанного в ячейке B4.
Все данные в диапазоне ячеек A2:A10 содержали уникальные значения.
=СЧЁТЕСЛИ($A$2:$A$10;A2)=1
Примечание: Необходимо сначала ввести формулу проверки данных в ячейку A2, а затем скопировать эту ячейку в ячейки A3:A10 так, чтобы второй аргумент СЧЁТЕСЛИ соответствовал текущей ячейке. Часть A2)=1 изменится на A3)=1, A4)=1 и т. д.
Я дополнительно изучил эту проблему, и теперь у меня есть минимальный файл, в котором я могу воспроизвести ошибку / ошибку. Все надстройки деактивированы, и я использую только 4 строки VBA-кода:
В файле 2 листа с форматированием, проверками данных, контурами (3 уровня) и некоторыми данными на нем.
Что я делаю, чтобы повредить файлы:
- Открыть файл
- Нажмите 3 раза на Outline-Level 2 (-> скрытие некоторых строк)
- Щелкните 3 раза на уровне Outline-Level 3 (-> отображение строк)
- Дважды щелкните ячейку, чтобы скопировать две строки с помощью кода VBA.
- Закройте файл
- Повторяйте до тех пор, пока файл не будет поврежден (иногда требуется 10 или более циклов, иногда файл поврежден после 1 цикла)
Поврежденный лист в файле не содержит кода и не активируется в этих циклах. Вот до и после проверки поврежденных данных:
Я до сих пор не понимаю, почему это происходит. Было бы интересно, если бы у кого-нибудь возникла такая же проблема или было бы известно об обходном пути, чтобы не произошло коррупции. (Я пробовал очевидные Application.Screenupdating, Application.Wait, . )
К сожалению, я не могу сказать, когда возникает эта проблема, потому что я получаю только поврежденные книги.
Теперь я получаю несколько книг от пользователей надстройки, которые повреждены. Проблема в том, что пользователи работают с файлами, и у них нет проблем. Только после сохранения, закрытия и повторного открытия файла Excel показывает вопрос, нужно ли восстанавливать файл. В зависимости от типа файла (мы используем * .xlsx и * .xlsb) Excel «ремонтирует» файл и удаляет все форматирование с 1 листа - в * .xlsb он не восстанавливает и не открывает вообще.
После просмотра файлов xml-Sheet я обнаружил, что повреждение происходит в тегах dataValidation-Tags. Не в одной конкретной проверке данных, иногда в одной, иногда в другой.
Поврежденные теги dataValidation выглядят так:
Большинство операций, которые происходят с листами, - это копирование и вставка (а не вставка) целых строк. На одном листе, который иногда бывает поврежден, есть только «копирование с», а не вставка или вставка на листе. Также кажется, что общая производительность файла влияет на частоту возникновения проблемы.
Поскольку я не могу указать код, в котором происходит это повреждение, я не ожидаю найти здесь решение, но, возможно, у кого-то была аналогичная проблема и есть подсказка, которая показывает мне правильное направление.
Дополнительная информация: Проблема возникает на разных машинах. Воспроизвести коррупционный процесс мне не удалось. Насколько мне известно, проблема возникла только в Excel 2016, но я не могу исключить, что более ранние версии точно так же повреждают файлы. Я проверил (по крайней мере, на некоторых машинах), что все обновления для Office и Windows установлены. Формулы в проверках данных содержат (способ) менее 255 символов. На поврежденных листах нет подключения к базе данных.
Любая идея или подсказка приветствуются!
Я, вероятно, не сильно помогу, так как стараюсь избегать надстроек COM. Я могу сказать, что для диагностики было бы полезно указать имя надстройки.
Ой, извините - я явно не достаточно ясно понял это. Надстройка COM написана мной / нами. Я просто не могу опубликовать какой-либо код, потому что понятия не имею, какой именно. Я отредактирую свой пост, чтобы прояснить это.
Попробуйте без использования буфера обмена. Вставьте новую строку и скопируйте диапазон, указав целевой диапазон.
Я мог бы поклясться, что я уже пробовал это . но я просто попробовал еще раз, и через полчаса, пытаясь снова получить ошибку, этого не произошло (обычно мне нужно максимум 5 минут). Наверное, я не поменял все вставки в исходном коде. Я собираюсь протестировать еще немного, но если вы опубликуете это как ответ, я с радостью приму его! (Тем не менее, я думаю, что эта проблема не должна возникать в excel или, по крайней мере, Excel должен иметь возможность «исправлять», просто удаляя неправильную проверку данных, а не все форматирование).
Читайте также: