2016-11-30 5 views
0

Я создаю многоуровневую зависимую выпадающую структуру в Excel на основе структуры parent-child. Построение этого с помощью vba не является проблемой, но проблема заключается в повторном открытии файла. Он удаляет проверку, потому что у них слишком много символов (более 255?)Возможно ли основать проверку данных на строке в одной ячейке в excel 2010

Сгенерированные строки проверки слишком велики для хранения Excel, поэтому они удаляются после повторного открытия.

Решение может заключаться в том, чтобы написать строку проверки в ячейке и основывать валидацию на этом значении ячейки. Единственная проблема заключается в том, что я свяжу валидацию данных с этой ячейкой только с одним вариантом.

значение в клетке что-то вроде A, B, C, D (уже пробовал с или без «»)

Кто-нибудь есть предложение для формулы Excel для использования в валидации данных для создания несколько варианты из строки типа A, B, C, D, расположенной в одной отдельной ячейке.

+0

UDF. Таким образом, вы можете использовать '= VALIDATE (A1)', если A1 - ячейка, которую вы хотите проверить. Затем вы создаете свой скрипт проверки в VBA. – Andreas

+0

Если вы уже используете VBA и имеете очень сложные правила проверки, почему бы не проверить в событии «Worksheet_Change»? –

ответ

0

TNX для поддержки.

Решение было немного сложнее.

Мне удалось заставить его работать, но только путем комбинирования формул VBA и Excel. Также я добавил значение в источник данных с идентификатором id и optionid в нем.

Excel:

Для проверки достоверности данных я использовать фикцию, который использует смещение, которое является динамическим и основан на 2-х значений. Таким образом, я не получаю ошибку, если валидация более 255 символов.

формула подтверждения данных: = OFFSET (список! $ A $ 2; MATCH (CONCATENATE (V18; "|"; E18); List! $ F: $ F; 0) -2; 1; COUNTIF (List! $ F: $ F; CONCATENATE (V18; "|"; E18)))

Один для id и один - optionid.

VBA:

я теперь использовать на изменениях события для значения, необходимое для выпадающих (проверок данных), но не давая вставить УВУ значения для проверки данных. Он получает эти значения через предварительно загруженный массив, который запускается с событием workbook_open. (если это не загружено, он снова загрузит его).

Когда я выбираю элемент, он записывает id и optionid в другую ячейку. Затем я использую их для создания следующих выпадающих списков и т. Д. С функцией смещения. (Один выпадающие может привести к нескольким строкам новых выпадающим)

  • Также добавлен некоторым функциональные возможности для удаления и изменений (в середине) событиях.

  • Также событие onChange теперь вызывает следующее выпадающее меню и записывает его значение, если есть только один параметр. Это, конечно, вызовет следующий.