Динамический список vba excel

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

#1

13.07.2018 12:49:27

Добрый день.
Прошу помощи знатоков.
Необходимо задать выпадающий список который формируется через ДВССЫЛ. Задаю его так:

Код
    Range(Cells(stroka_vstavka + 1, stolb_vstavka + 13), _
                Cells(stroka_vstavka + kol_strok, stolb_vstavka + 13)). _
                Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(RC[-1]&""_Группа"")"

Ругается при выполнении, как я понял на RC[-1], то есть на такую адресацию в «=INDIRECT(RC[-1]&»»_Группа»»)».  Здесь RC[-1] — это изменяемые текстовые данные, которые в конечном итоге формируют имя диапазона с данными, на который формируется ссылка. То есть выпадающий список будет изменятся от значения в  ячейке RC[-1].
КАК VBA объяснить чего я от него хочу?

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Formula1 и FormulaR1C1 это далеко не одно и то же.
Замените FormulaR1C1  на Formula.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

Варианты:
FormulaR1C1
Formula1R1C1
Formula
Результат один — «Named argument not found»

Изменено: Bugrimdjon13.07.2018 13:06:16

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#4

13.07.2018 13:15:03

Цитата
Bugrimdjon написал: КАК VBA объяснить чего я от него хочу?

Для начала объяснить форуму. А для этого нужно показывать файл-пример.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

Выделяю ячейки > проверка данных>  в проверку данных вношу значение список, в нем указываю значение =ДВССЫЛ(RC[-1]&»_Группа»).
Такой же эффект необходимо получить через VBA.
Записываю макрос такой последовательности, потом его повторяю и ОШИБКА.
Прикрепляю пободный файл. Макрос 26 и 27 —  записанные макросы. Эксель их записал, а повторять отказывается.

Прикрепленные файлы

  • Книга2.xlsm (17.65 КБ)

Изменено: Bugrimdjon13.07.2018 13:58:06

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

Контакты см. в профиле

Вариант: создать на листе именованный динамический диапазон и уже его скормить выпадающему списку.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

Именованный диапазон создан и не один. Название диапазона формируется от значения в RC[-1].  

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

Контакты см. в профиле

Именованные диапазоны вижу, но они у Вас не динамические.
Вот и запишите рекордером присвоение нужного именованного диапазона выпадающему списку.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

Этот файл сформирован для примера, оригинал тяжел для восприятия. Прикрепляю его, может получится разобраться.

Выбираем лист «Новый расчет»
Выделяем столбец «Модули, комплекты» без заголовка.
Жмем CTRL+L.
В появившемся окне устанавливаем первые значения в combobox «Станок», «Узел», «Был», «Стал».
Ждем сформировать комплект.
ЖДЕМ ОШИБКУ.

 

Юрий М

Модератор

Сообщений: 60577
Регистрация: 14.09.2012

Контакты см. в профиле

Файлы удалены — читаем в Правилах о максимально допустимом размере. И другие пункты Правил тоже читаем.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

Всем спасибо. РАЗОБРАЛСЯ.
Действительно, устранил возникновение ситуации с неописанными ссылками и ошибка пропала.

 

Bugrimdjon

Пользователь

Сообщений: 11
Регистрация: 21.06.2018

#12

16.07.2018 13:45:38

Добрый день.
Опять по поводу выпадающего списка. Проблема следующая.
При выполнении программы затыкается на Add Type…=INDIRECT(«»Производитель[Производитель]»»)».
Выпадает ошибка: Run-time error «1004»: Application-defined or object-defined error.
После, если продолжить выполнение программы, выполняется без проблем. Как будто этой ошибки не было.
Может кто знает, что это такое и как с ним бороться.

Код
     With Sheets(list_vstsvki).Range(Cells(stroka_vstavka + 1, stolb_vstavka + 12), _
         Cells(stroka_vstavka + kol_strok, stolb_vstavka + 12)).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(""Производитель[Производитель]"")"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

Изменено: Bugrimdjon16.07.2018 13:46:39

Возможно, вы знаете, как создать раскрывающийся список каскадной проверки в Excel. Однако как создать динамические каскадные списки в Excel? Эта статья знакомит с методом VBA, чтобы избавиться от этого.

Создавайте динамические каскадные списки с кодом VBA


Создавайте динамические каскадные списки с кодом VBA

Как показано на скриншоте ниже, вам нужно создать родительский список, содержащий уникальные значения столбца Напиток, и отобразить все соответствующие значения во втором списке на основе выбора в родительском списке. Следующий код VBA поможет вам в этом. Пожалуйста, сделайте следующее.

1. Во-первых, вам нужно извлечь все уникальные значения из столбца Напиток. Выберите пустую ячейку, введите формулу массива =IFERROR(INDEX($A$2:$A$11, MATCH(0,COUNTIF($J$1:J1, $A$2:$A$11), 0)),»») в Панель формул, а затем нажмите Ctrl + Shift + Enter ключ. Затем перетащите Ручка заполнения чтобы получить все уникальные значения. Смотрите скриншот:

Внимание: В формуле $A$2:$A$11 это диапазон, из которого вы будете извлекать уникальные значения. J1 — это ячейка выше, в которой находится ваша формула.

Функции: Если формулу слишком сложно запомнить и использовать, Выберите повторяющиеся и уникальные ячейки полезности Kutools for Excel будет хорошим выбором для быстрого извлечения всех уникальных значений из столбца.

Выберите столбец, содержащий уникальные значения, из которых вы будете извлекать данные. Затем включите утилиту, нажав Кутулс > Выберите > Выберите повторяющиеся и уникальные ячейки. В Выберите повторяющиеся и уникальные ячейки в диалоговом окне выберите Все уникальные (включая 1-е дубликаты) и нажмите OK кнопка. Затем в столбце выбираются все уникальные значения. Скопируйте и вставьте их на новое место. Смотрите скриншот:

2. Вставьте два списка отдельно, нажав Застройщик > Вставить > Список (элемент управления ActiveX). Смотрите скриншот:

3. Щелкните правой кнопкой мыши поле родительского списка и выберите Предложения из контекстного меню. в Предложения диалоговом окне измените (Имя) поле к Напиток или другое имя, как вам нужно, введите диапазон ячеек, содержащий извлеченные уникальные значения, в ListFillRange поле и закройте диалог.

4. Повторите шаг 3, чтобы изменить значение второго окна списка. (Имя) поле для элемента в Предложения диалоговое окно.

5. Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню. Затем скопируйте ниже код VBA в окно кода. Смотрите скриншот:

Код VBA: создание динамических каскадных списков в Excel

Dim xPreStr As String
Private Sub Drink_Click()
'Update by Extendoffice 2018/06/04
    Dim I, xRows As Long
    Dim xRg As Range
    Dim xRegStr As String
    Application.ScreenUpdating = False
    xRegStr = Me.Drink.Text
    Set xRg = Range("A2:A11")
    xRows = xRg.Rows.Count
    If xRegStr <> xPreStr Then
    Me.Item.Clear
   'Me.OtherListBoxName.Clear
    Set xRg = xRg(1)
    For I = 1 To xRows
        If xRg.Offset(I - 1).Value = xRegStr Then
            Me.Item.AddItem xRg.Offset(I - 1, 1).Value
            'Me.OtherListBoxName.AddItem xRg.Offset(I - 1, 2).Value
        End If
    Next
    xPreStr = xRegStr
    End If
    Application.ScreenUpdating = True
End Sub

Заметки: В коде Drink и Item — названия двух списков, измените их на свои собственные.

6. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

7. Выключите режим дизайна, нажав Застройщик > Режим проектирования.

С этого момента при выборе любого напитка, например, кофе, в родительском списке все кофейные элементы будут отображаться во втором. При выборе «Чай» или «Вино» во втором списке отображаются только чай или вино. Смотрите скриншот:


Статьи по теме:

  • Как очистить зависимую ячейку раскрывающегося списка после изменения выбора в Excel?
  • Как создать зависимые каскадные выпадающие списки в Excel?
  • Как автоматически заполнять другие ячейки при выборе значений в раскрывающемся списке Excel?
  • Как создать календарь с выпадающим списком в Excel?
  • HКак сохранить или сохранить выбранные списки ActiveX в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Assuming your data is in Columns A:B where row1 is header row and you have a named range called Days then right click the Sheet tab —> View code and paste the code given below into the opened code window —> Save your workbook as Macro-Enabled Workbook.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim x, dict
Dim i As Long, lr As Long
Dim Rng As Range, Cell As Range
Dim Str As String
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range("A2:A" & lr)
x = Range("Days").Value
Set dict = CreateObject("Scripting.Dictionary")
If Target.Column = 2 And Target.Row > 1 Then
    If Target.Offset(0, -1) <> "" Then
        For Each Cell In Rng
            If Cell <> "" And Cell = Target.Offset(0, -1) Then
                If Str = "" Then
                    Str = Cell.Offset(0, 1).Value
                Else
                    Str = Str & ", " & Cell.Offset(0, 1).Value
                End If
            End If
        Next Cell
        For i = 1 To UBound(x, 1)
            If InStr(Str, x(i, 1)) = 0 Then
                dict.Item(x(i, 1)) = ""
            End If
        Next i
        On Error Resume Next
        With Target.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                                xlBetween, Formula1:=Join(dict.keys, ",")
        End With
    End If
End If
End Sub

So once you select a cell in column B, the code will add a drop down list excluding the days already selected for the specific test no. corresponding cell in column A.
enter image description here

Что такое список в Excel VBA?

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

Списки используют именованные диапазоны, имеющие определенные значения. Целью использования списка является отображение списка значений, из которых пользователи могут выбирать.

Оглавление

  • Что такое список в Excel VBA?
    • Как создать список в Excel?
    • Как создать список в VBA?
    • Как создать список в пользовательской форме?
    • Как добавить динамический элемент управления в список?
    • Как добавить элементы в список элементов управления в VBA?
    • Как удалить элементы из списка элементов управления с помощью VBA?
    • Пример
    • Константы списка в VBA
    • Часто задаваемые вопросы
    • Рекомендуемые статьи

Как создать список в Excel?

Шаги для создания списка в Excel перечислены ниже:

  1. Шаг 1. Включите вкладку «Разработчик» на ленте Excel, чтобы получить доступ к элементам управления ActiveX. В диалоговом окне «Параметры Excel» нажмите «Настроить ленту в Excel» и установите флажок «Разработчик».
    Шаг 2: На вкладке «Разработчик» нажмите «Вставить», а затем элемент управления «список». Это вставит новый список на лист Excel.

    Список-окно-в-Excel-1

  2. Шаг 3: Нарисуйте прямоугольник на листе Excel, чтобы создать список, как показано на следующем рисунке.

    Список-окно-в-Excel-2

  3. Шаг 4: Выберите список, перейдите на вкладку «Разработчик» и выберите «Свойства». Откроется окно «Свойства».

    Список-окно-в-Excel-3

  4. Шаг 5: В окне «Свойства» введите «дни» в «ListFillRange». «Дни» — это именованный диапазон дней недели.

    Список-окно-в-Excel-4

  5. Шаг 6: Щелкните свойство «MultiSelect». В раскрывающемся списке выберите «1-fmMultiSelectMulti», как показано на следующем изображении.

    Список-окно-в-Excel-5

  6. Шаг 7: Щелкните свойство «ListStyle». В раскрывающемся списке выберите «1-fmListStyleOption». Это добавит флажки слева от перечисленных элементов, как показано на следующем рисунке.

    Список-окно-в-Excel-6

  7. Шаг 8: Закройте окно «Свойства». Окно со списком выглядит так, как показано на следующем рисунке.

    Список-окно-в-Excel-7

    Примечание: Вы можете выбрать «режим дизайна выключен», нажав «Режим дизайна». Это закрывает «режим проектирования».

Как создать список в VBA?

Шаги для создания списка в VBA перечислены ниже:

.free_excel_div{фон:#d9d9d9;размер шрифта:16px;радиус границы:7px;позиция:относительная;margin:30px;padding:25px 25px 25px 45px}.free_excel_div:before{content:»»;фон:url(центр центр без повтора #207245;ширина:70px;высота:70px;позиция:абсолютная;верх:50%;margin-top:-35px;слева:-35px;граница:5px сплошная #fff;граница-радиус:50%} Вы можете скачать этот шаблон Excel для списков здесь — Шаблон Excel для списков

  • Шаг 1: Щелкните правой кнопкой мыши список и убедитесь, что выбран режим разработки. Это связывает поле со списком с ячейкой.
  • Шаг 2: В «свойствах» перейдите к свойству «LinkedCell» и заполните «B17», как показано на следующем рисунке.

Список в Excel 8

  • Шаг 3: В «ListFillRange» введите «Месяц».

Список в Excel 9

  • Шаг 4: Окно со списком выглядит так, как показано на следующем изображении.

Список в Excel 10

Данные в ячейке B17 изменяются, когда вы меняете свой выбор в списке. Это показано на следующем изображении.

Список в Excel 11

Как создать список в пользовательской форме?

Шаги для создания списка в пользовательской форме перечислены ниже:

  • Шаг 1: На вкладке «Разработчик» нажмите «Visual Basic» в разделе «Код» или нажмите клавиши ALT+F11.

Список в Excel 12

  • Шаг 2: В меню «Вставка» нажмите «Пользовательская форма».

Список в Excel 13

  • Шаг 3: Из панели инструментов перетащите элемент управления списком на «Пользовательскую форму».

Список в Excel 14

  • Шаг 4: Дважды щелкните «UserForm» и выберите «Событие UserForm», как показано на следующем снимке экрана.

Список в Excel 15

  • Шаг 5: Добавьте следующий код в промежуточную процедуру.

Частная подпрограмма UserForm_Initialize()

ListBox1.AddItem «MBA»

ListBox1.AddItem «MCA»

ListBox1.AddItem «MSC»

ListBox1.AddItem «MECS»

ListBox1.AddItem «CA»

Конец сабвуфера

Список в Excel 16

  • Шаг 6: Нажмите F5, чтобы запустить код.

Как добавить динамический элемент управления в список?

Действия по добавлению динамического элемента управления в поле со списком в форме UserForm с помощью VBAUserForm Использование VBA В VBA пользовательские формы представляют собой настраиваемые определяемые пользователем формы, предназначенные для приема пользовательского ввода в виде формы. Он имеет различные наборы элементов управления для добавления, такие как текстовые поля, флажки и метки. Подробнее перечислены ниже:

  • Шаг 1: На панели инструментов добавьте «CommandButton» в «UserForm».

Список в Excel 17

  • Шаг 2: Щелкните правой кнопкой мыши «Командную кнопку» и выберите «Свойства».

Список в Excel 18

  • Шаг 3: Измените заголовок «CommandButton» на «Create_Listbox».

Список в Excel 20

  • Шаг 4: Дважды щелкните кнопку команды, и появится следующий код.

Частная подпрограмма CommandButton1_Click()

Конец сабвуфера

Список в Excel 21

  • Шаг 5: Назовите следующую процедуру «Add_Dynamic_Listbox».

Подпрограмма Add_Dynamic_Listbox()

‘Добавить окно динамического списка и назначить его объекту ‘LstBx’

Установите LstBx = UserForm3.Controls.Add(«Forms.ListBox.1»)

‘Позиция списка

LstBx.Left = 20

LstBx.Top = 10

Конец сабвуфера

  • Шаг 6: Нажмите F5, чтобы запустить макрос.

Как добавить элементы в список элементов управления в VBA?

Код для добавления элементов в элемент управления списком в VBA упоминается следующим образом:

Частная подпрограмма Insert _Items _To_LstBox ()

ListBox1.AddItem «Элемент 1»

ListBox1.AddItem «Элемент 2»

ListBox1.AddItem «Элемент 3»

ListBox1.AddItem «Элемент 4»

ListBox1.AddItem «Элемент 5»

Конец сабвуфера

Как удалить элементы из списка элементов управления с помощью VBA?

Код для удаления элементов из элемента управления списком в VBA упоминается следующим образом:

Sub Clr_LstBx()

UserForm3.ListBox1.Clear

Конец сабвуфера

Пример

Допустим, у нас есть ежедневные данные о продажах. Мы хотим подготовить графический пользовательский интерфейс этих данных о продажах, который позволит нам выбирать элементы из списка. Чтобы получить данные о продажах, мы должны изменить ячейку индекса на «ссылку на ячейку» и применить формулу ВПРФормула ВПРФункция Excel выполняет поиск определенного значения и возвращает соответствующее совпадение на основе уникального идентификатора. Уникальный идентификатор однозначно связан со всеми записями базы данных. Например, идентификатор сотрудника, номер списка учащихся, контактный номер клиента, адрес электронной почты продавца и т. д. являются уникальными идентификаторами. читайте больше, как показано на следующих изображениях.

Список в Excel 22Список в Excel 23

Константы списка в VBA

Константы, их значения и описание приведены в следующей таблице:

Список в Excel 24

Часто задаваемые вопросы

#1 – Как использовать список в Excel?

Списки используются для управления таблицами в пользовательской форме. Строки информации аккуратно управляются без ненужного отображения информации в пользовательской форме.

Пользователь может прокручивать элементы списка. Настройка «типа выбора» позволяет пользователям выбирать несколько вариантов из списка. Когда пользователь выбирает элемент из списка, с таким выбором предпринимается действие.

По умолчанию поле со списком выдает результат, соответствующий порядковому номеру выбранного элемента. Таким образом, если выбран четвертый элемент, на выходе будет число 4.

# 2 — Как заполнить список в Excel VBA?

Обычно список необходимо заполнять значениями каждый раз при открытии рабочей книги. Процедура «Открыть» выполняется каждый раз при открытии Рабочей книги.

Для заполнения списка необходимо использовать следующий код:

С Sheet1.lstListBox
.AddItem «Джеймс»
.AddItem «Келли»
.AddItem «Элизабет»
.AddItem «Джордж»
.AddItem «Уильям»
Конец с

С этим кодом список заполняется 5 именами — Джеймс, Келли, Элизабет, Джордж и Уильям.

#3 – Как получить данные из списка в Excel?

Данные могут быть эффективно использованы только при правильном их извлечении. Шаги для извлечения данных из списка перечислены ниже:

1. Выберите «Управление форматом» в меню после щелчка правой кнопкой мыши по списку.
2. В поле «Ссылка на ячейку» введите координаты пустой ячейки.
3. Выберите ячейку, в которой будут отображаться данные из списка. Необходимо использовать следующую формулу:
«=ИНДЕКС([begin cell]:[end cell],[cell link],0)”

Примечание: «Начальная ячейка» означает первую ячейку списка. «Конечная ячейка» означает последнюю ячейку списка. «Ссылка на ячейку» означает ячейку, координаты которой были введены на втором шаге.

№ 4. В чем разница между списком и полем со списком?

Различия между полем со списком и полем со списком перечислены ниже.

– Окно списка состоит из списка элементов и позволяет пользователям выбирать один или несколько параметров. Напротив, поле со списком состоит из комбинации текстового поля и раскрывающегося списка. Текстовое поле позволяет пользователям вводить элемент. Выпадающий список позволяет пользователям выбирать элемент.
– В поле со списком отображаются все элементы в заданной области сразу, а в поле со списком — по одному элементу за раз. Элементы раскрывающегося списка поля со списком видны, когда пользователь щелкает
это.
– В поле со списком пользователь должен выбирать из доступных элементов, тогда как в поле со списком пользователь может ввести элемент, которого нет в списке.
– Окно списка используется, когда ввод ограничен элементами списка. Однако поле со списком используется там, где упоминается список предлагаемых вариантов.
– Окно со списком занимает больше места, поскольку сразу отображается полный список. С другой стороны, поле со списком помещается на маленьком пространстве, потому что список отображается только при нажатии кнопки
Кнопка «Стрелка вниз.

  • Поле со списком в Excel — это список, назначенный переменной, который можно использовать для выбора нескольких элементов.
  • В пользовательской форме список можно вставить, выбрав параметр списка.
  • При создании списка в Excel необходимо ввести данные в свойствах «ListFillRange», «MultiSelect» и «ListStyle».
  • «Режим дизайна» можно отключить, нажав «Режим дизайна».
  • При создании списка в пользовательской форме щелкните «Visual Basic» или нажмите клавиши ALT+F11.

Рекомендуемые статьи

Это было руководство по списку в Excel VBA. Здесь мы обсуждаем, как создать поле списка на листе Excel и в пользовательских формах, а также приводим практические примеры и загружаемые шаблоны. Вы также можете посмотреть на эти полезные функции в Excel –

  • Редактировать раскрывающийся список в ExcelРедактировать раскрывающийся список в ExcelРаскрывающиеся списки в Excel помогают пользователю вручную вводить данные в ячейку с определенными значениями на выбор.Подробнее
  • Флажок в ExcelФлажок в ExcelФлажок в Excel представляет собой квадратное поле, используемое для представления вариантов (или выбора) пользователю для выбора.Подробнее
  • Функция VBA MsgBoxVBA MsgBoxVBA MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную.Подробнее

0 / 0 / 0

Регистрация: 10.03.2020

Сообщений: 3

1

Excel

Добавление данных в выпадающий список

10.03.2020, 20:02. Показов 2160. Ответов 4


Студворк — интернет-сервис помощи студентам

Добрый вечер.
Это мой первый макрос, поэтому, пожалуйста, «не кидайте в меня тапками»
На просторах интеренета нашла вот такой код, который, в приницпе, решает мою задачу, при одном условии, что данные находятся на одном листе (я его подредактироала под свою задачу: есть несколько динамических диапозонов, в которые можно добавить новые значения вводя данные в ячейку с выпадающим списком, который ссылается на эту динамическую таблицу)
Прилагаю код (не знаю как правильно его оформить)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub Worksheet_Change(ByVal Target As Range)
    Set a = Range("Этап")
    Set с = Range("Тип")
    Set e = Range("Точка")
    Set g = Range("Фактор")
    If Target.Cells.Count > 1 Then Exit Sub
    If IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("K2:K10000")) Is Nothing Then
        If WorksheetFunction.CountIf(a, Target) = 0 Then
            r = MsgBox("Добавить новое имя в справочник?", vbYesNo)
            If r = vbYes Then a.Cells(a.Rows.Count + 1) = Target
        End If
End If
 
If Not Intersect(Target, Range("L2:L10000")) Is Nothing Then
        If WorksheetFunction.CountIf(с, Target) = 0 Then
            r = MsgBox("Добавить новое имя в справочник?", vbYesNo)
            If r = vbYes Then с.Cells(с.Rows.Count + 1) = Target
        End If
End If
 
If Not Intersect(Target, Range("M2:M10000")) Is Nothing Then
        If WorksheetFunction.CountIf(e, Target) = 0 Then
            r = MsgBox("Добавить новое имя в справочник?", vbYesNo)
            If r = vbYes Then e.Cells(e.Rows.Count + 1) = Target
        End If
End If
 
If Not Intersect(Target, Range("N2:N10000")) Is Nothing Then
        If WorksheetFunction.CountIf(g, Target) = 0 Then
            r = MsgBox("Добавить новое имя в справочник?", vbYesNo)
            If r = vbYes Then g.Cells(g.Rows.Count + 1) = Target
        End If
End If
 
End Sub

Но мне надо, чтобы лист с выпадающим списком находился на одном листе («Новая форма»), а таблицы с редактируемыми динамическими диапозонами — на другом листе («Справочники»)
А где это изменить в коде никак не могу найти…
Буду ОЧЕНЬ признательна за помощь



0



Понравилась статья? Поделить с друзьями:
  • Динамический просмотр в excel
  • Динамическое программирование решение задач в excel
  • Динамический обмен данными excel
  • Динамическое программирование в excel пример
  • Динамический массив данных в excel