Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
pie
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 123
1

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

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

Добрый день.
Возникла проблема. Подготовил данные на отдельном листе, через диспетчер имен задал имя "данные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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2017, 12:03
Ответы с готовыми решениями:

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

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

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

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

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

4
Vlad999
3213 / 1965 / 629
Регистрация: 02.11.2012
Сообщений: 5,059
03.07.2017, 12:54 2
Лучший ответ Сообщение было отмечено pie как решение

Решение

4 вариант не проверили.
Visual Basic
1
 Formula1:="=данные1"
Добавлено через 1 минуту
Цитата Сообщение от pie Посмотреть сообщение
ссылку на другую страницу,
должна быть в формуле в именованном диапазоне.
1
pie
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 123
03.07.2017, 13:55  [ТС] 3
Vlad999, Спасибо. Получилось.
Теперь на основании этого выпадающего списка хочу сделать второй с кодом:
Visual Basic
1
.add Type:=xlValidateList, Formula1:="=ДВССЫЛ(ПРОСМОТР(D" & row & "; данные1; данные2))"
Но опять же появляется ошибка.
0
pie
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 123
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
0
Миниатюры
Создание выпадающего списка в VBA Excel с использованием диспетчера имен  
Вложения
Тип файла: zip Протокол по ПБ v2.zip (18.2 Кб, 4 просмотров)
Vlad999
3213 / 1965 / 629
Регистрация: 02.11.2012
Сообщений: 5,059
06.07.2017, 14:11 5
опишите словами что вы вообще пытаетесь сделать.
0
06.07.2017, 14:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2017, 14:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.