Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 124
1

Создание выпадающего списка в VBA Excel с использованием диспетчера имен

03.07.2017, 12:03. Показов 4848. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Возникла проблема. Подготовил данные на отдельном листе, через диспетчер имен задал имя "данные1" (название только для примера).
Потом через VBA пытаюсь создать этот выпадающий список:
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
Public Sub addRow(row)
    Dim wb As Workbook
    Dim wsh As Worksheet
    
    Set wb = ActiveWorkbook
    Set wsh = wb.Worksheets("главная")
    
    wb.Application.CutCopyMode = False
    wsh.Rows(row).Insert
    
    With wsh.Range("D" & row).Validation
        .Delete
        .add Type:=xlValidateList, Formula1:=[данные1]
    End With
        
    With wsh.Rows(row).Font
        .Name = "Arial Narrow"
        .Size = 10
    End With
    
    With wsh.Range("B" & row & ":M" & row).Borders
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlThin
    End With
    
End Sub
Если ставлю как в коде выше - ошибка.
Если делаю так [данные1].Address, то из выбора показывает диапазон.
Если делаю так Formula1:="=" & [данные1], то ошибка
Если делаю так Formula1:="=" & [данные1].Address, то выводит данные из диапазона на текущем листе.

Думаю если вставлять еще и ссылку на другую страницу, то смысл от диспетчера имен теряется.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2017, 12:03
Ответы с готовыми решениями:

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

Создание нумерованного списка в ворд из excel vba
Уважаемые форумчане! Использую код созданный Аксима. Данную конструкцию использую в таблице для...

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

Создание программы с использованием имен
Создать программу определения номеров групп с наибольшим значением качественной успеваемости за...

4
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
03.07.2017, 12:54 2
Лучший ответ Сообщение было отмечено pie как решение

Решение

4 вариант не проверили.
Visual Basic
1
 Formula1:="=данные1"
Добавлено через 1 минуту
Цитата Сообщение от pie Посмотреть сообщение
ссылку на другую страницу,
должна быть в формуле в именованном диапазоне.
1
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 124
03.07.2017, 13:55  [ТС] 3
Vlad999, Спасибо. Получилось.
Теперь на основании этого выпадающего списка хочу сделать второй с кодом:
Visual Basic
1
.add Type:=xlValidateList, Formula1:="=ДВССЫЛ(ПРОСМОТР(D" & row & "; данные1; данные2))"
Но опять же появляется ошибка.
0
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 124
06.07.2017, 06:35  [ТС] 4
Добрый день.
Все перепробовал, но не могу сделать второй зависимый список через VBA. Выводит ошибку.
Сперва пробовал с помощью формулы выше, теперь так:
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
Private Sub CommandButton1_Click()
    Dim wb As Workbook
    Dim wsh As Worksheet
    Dim row As Integer
    
    Set wb = ActiveWorkbook
    Set wsh = wb.Worksheets(1)
    row = wsh.Cells(1, 1).Value
    
    wsh.Rows(row).Insert
    
    wsh.Cells(row, 2).Value = row
        
     With wsh.Cells(row, 3).Validation
        .Add Type:=xlValidateList, Formula1:="=ссылки1"
    End With
    
    q = wsh.Cells(1, 11).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    w = wsh.Cells(row, 3).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    e = wsh.Range(Cells(2, 11), Cells(5, 11)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    
    With wsh.Cells(row, 4).Validation
        .Add Type:=xlValidateList, Formula1:="=СМЕЩ(" & q & "; ПОИСКПОЗ(" & w & "; " & e & "; 0); 1; СЧЁТЕСЛИ (" & e & ", " & w & "); 1)"
    End With
    
    wsh.Cells(1, 1).Value = wsh.Cells(1, 1).Value + 1
End Sub
Миниатюры
Создание выпадающего списка в VBA Excel с использованием диспетчера имен  
Вложения
Тип файла: zip Протокол по ПБ v2.zip (18.2 Кб, 8 просмотров)
0
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
06.07.2017, 14:11 5
опишите словами что вы вообще пытаетесь сделать.
0
06.07.2017, 14:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2017, 14:11
Помогаю со студенческими работами здесь

Создание выпадающего списка как в яндексе или Т9
Привет профессионалам, может кто знает как это сказать. Вопрос следующчий возможно сделать такую...

Как задать диапазон имен для рабочей книги в VBA Excel?
Добрый день. Нужна помощь с несколькими вопросами по vba excel: 1. Для создания сводной таблицы я...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru