powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно ли? Список из другой книги.
18 сообщений из 18, страница 1 из 1
Возможно ли? Список из другой книги.
    #34037364
lcpd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток всем.
У меня две книги, одна таблица с данными, другая справочник.
Нужно что бы когда в первой книге пользователь выделяет ячейку, из неё выподал список который храница в другой книге. Пересмотрел все примеры на форуме, похожего не нашел. Помогите плиз. Спасибо.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037489
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через validation можно только, если список находится на том же листе
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037651
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как уже говорил vbapro
Если справочник расположен на другом листе, то нельзя кажись, а если поместить в одном, то можно через Данные>Проверка
указать "тип данных" список и указать "источник"
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037655
lcpd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbaproчерез validation можно только, если список находится на том же листе


Это и так понятно. Вопрос в том, что две книги и список в другой книге.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037666
lcpd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orunbekкак уже говорил vbapro
Если справочник расположен на другом листе, то нельзя кажись, а если поместить в одном, то можно через Данные>Проверка
указать "тип данных" список и указать "источник"


Если справичник расположен в пределах одной книги, можно. Даже на этом форуме гора примеров. НО вопрос именно в том, что две книги.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037684
lcpd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вероятно здесь ответа я не найду. Всем спасибо. Вопрос снят.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037748
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оказывается можно, ммм... тот же самый список, только указываете "Источник строк" значения разделенные через точку-запятую, т.е. создаете макрос, который составляет источник строк для ячеек через этот метод и всё
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037769
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не поняли то что я предложил скажите я выложу пример
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037830
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekесли не поняли то что я предложил скажите я выложу примервыложи
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037890
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была такая тема , но никто еще не рискнул попробовать!
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34037970
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33 Была такая тема , но никто еще не рискнул попробовать!
кстати, верное предложение. я что-то делал подобное: на листе был скрытый столбец, в него копировались разные данные с разных листов, в зависимости от результатов анализа. После этого переделывал условие для Validation, где в качестве источника был диапазон в скрытом столбце.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34038009
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот процедура и сам файл тоже выложил
Код: plaintext
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.
37.
38.
39.
40.
41.
42.
Sub FillAutocomplete()
Const strSheetReference = "Справочник", strSheetData = "Данные"
Const intLastDataRow =  11 , intDataColumn =  2 
    Dim intLastRowOfReference%, strSource$, i%
'находим последнюю строку товаров в листе справочника
    intLastRowOfReference = Sheets(strSheetReference).Cells.SpecialCells(xlLastCell).Row
    Do While (intLastRowOfReference >  1 ) And (Trim(Sheets(strSheetReference).Cells(intLastRowOfReference,  2 )) = "")
        intLastRowOfReference = intLastRowOfReference -  1 
    Loop
'отсутствуют данные в справочнике товаров
    If Trim(Sheets(strSheetReference).Cells(intLastRowOfReference,  2 )) = "" Then
        MsgBox "Отсутствуют данные в справочнике!", vbInformation
        Exit Sub
    End If
'данные есть
'сформируем строку "Источник"
    strSource = ""
    For i =  2  To intLastRowOfReference
        If strSource <> "" Then
            strSource = strSource & ";" & Sheets(strSheetReference).Cells(i,  2 ).Value
        Else
            strSource = Sheets(strSheetReference).Cells(i,  2 ).Value
        End If
    Next
'теперь создаем проверку данные (validation)
    For i =  2  To intLastDataRow
        With Cells(i, intDataColumn).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=CVar(strSource)
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
        Cells(i, intDataColumn).Select
    Next
End Sub
вроде все нормально, из-за чего источник не формируется не понимаю, но после того как откроешь окно проверки (Данные>Проверка) и ОК, то всё получается... хм... или это глюк Excel?
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34038023
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот процедура и сам файл тоже выложил
Код: plaintext
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.
37.
38.
39.
40.
41.
42.
Sub FillAutocomplete()
Const strSheetReference = "Справочник", strSheetData = "Данные"
Const intLastDataRow =  11 , intDataColumn =  2 
    Dim intLastRowOfReference%, strSource$, i%
'находим последнюю строку товаров в листе справочника
    intLastRowOfReference = Sheets(strSheetReference).Cells.SpecialCells(xlLastCell).Row
    Do While (intLastRowOfReference >  1 ) And (Trim(Sheets(strSheetReference).Cells(intLastRowOfReference,  2 )) = "")
        intLastRowOfReference = intLastRowOfReference -  1 
    Loop
'отсутствуют данные в справочнике товаров
    If Trim(Sheets(strSheetReference).Cells(intLastRowOfReference,  2 )) = "" Then
        MsgBox "Отсутствуют данные в справочнике!", vbInformation
        Exit Sub
    End If
'данные есть
'сформируем строку "Источник"
    strSource = ""
    For i =  2  To intLastRowOfReference
        If strSource <> "" Then
            strSource = strSource & ";" & Sheets(strSheetReference).Cells(i,  2 ).Value
        Else
            strSource = Sheets(strSheetReference).Cells(i,  2 ).Value
        End If
    Next
'теперь создаем проверку данные (validation)
    For i =  2  To intLastDataRow
        With Cells(i, intDataColumn).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=CVar(strSource)
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
        Cells(i, intDataColumn).Select
    Next
End Sub
вроде все нормально, из-за чего источник не формируется не понимаю, но после того как откроешь окно проверки (Данные>Проверка) и ОК, то всё получается... хм... или это глюк Excel?
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34038061
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekвроде все нормально, из-за чего источник не формируется не понимаю, но после того как откроешь окно проверки (Данные>Проверка) и ОК, то всё получается... хм... или это глюк Excel?
я с этой проблемой бился несколько дней. решение было такое: разделение значений в списке через запятые и вконце строки пробелы.
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34039107
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcpd vbaproчерез validation можно только, если список находится на том же листе
Это и так понятно. Вопрос в том, что две книги и список в другой книге.
Во-первых , ничего таки не понятно ;-) Если список находится на другом листе, то ему просто надо присвоить имя через меню Вставка-Имя-Присвоить... и Validation проглотит имя за милую душу (напр. =ИмяРанга).

lcpdВероятно здесь ответа я не найду. Всем спасибо. Вопрос снят
Во-вторых , спешка хороша - сам знаешь где...

Во-третьих , попробуй след, наспех сделанный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test()
    Dim strPath As String, strFile As String, strSheet As String
    Dim strCol As String, strList As String, i As Long, rng As Range
    
    strPath = "C:\Temp\"
    strFile = "Book1.xls"
    strSheet = "Sheet1"
    strRange = "A1:A7"
    Set rng = Range(strRange)
    
    For i = rng.Row To rng.Rows.Count + rng.Row -  1 
        If strList <> "" Then strList = strList & Application.International(xlListSeparator)
        strList = strList & ExecuteExcel4Macro("'" & strPath & _
            "[" & strFile & "]" & strSheet & "'!" & _
            rng(i).Address(, , xlR1C1))
    Next i
    
    With ActiveCell.Validation
        .Delete
        .Add xlValidateList, , , strList
    End With
End Sub
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34039773
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) lcpd vbaproчерез validation можно только, если список находится на том же листе
Это и так понятно. Вопрос в том, что две книги и список в другой книге.
Во-первых , ничего таки не понятно ;-) Если список находится на другом листе, то ему просто надо присвоить имя через меню Вставка-Имя-Присвоить... и Validation проглотит имя за милую душу (напр. =ИмяРанга).

lcpdВероятно здесь ответа я не найду. Всем спасибо. Вопрос снят
Во-вторых , спешка хороша - сам знаешь где...

Во-третьих , попробуй след, наспех сделанный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test()
    Dim strPath As String, strFile As String, strSheet As String
    Dim strCol As String, strList As String, i As Long, rng As Range
    
    strPath = "C:\Temp\"
    strFile = "Book1.xls"
    strSheet = "Sheet1"
    strRange = "A1:A7"
    Set rng = Range(strRange)
    
    For i = rng.Row To rng.Rows.Count + rng.Row -  1 
        If strList <> "" Then strList = strList & Application.International(xlListSeparator)
        strList = strList & ExecuteExcel4Macro("'" & strPath & _
            "[" & strFile & "]" & strSheet & "'!" & _
            rng(i).Address(, , xlR1C1))
    Next i
    
    With ActiveCell.Validation
        .Delete
        .Add xlValidateList, , , strList
    End With
End Sub

Как всегда из ваших кодов получаю новые знания, ну не зря же у вас MVP по Excel ;-)
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34039838
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekКак всегда из ваших кодов получаю новые знания, ну не зря же у вас MVP по Excel ;-)

:-)
...
Рейтинг: 0 / 0
Возможно ли? Список из другой книги.
    #34042205
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка для наспех сделанного кода :-) Нужно использовать запятую как разделитель в списке, а не локальный разделитель Application.International(xlListSeparator)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub test()
    Dim strPath As String, strFile As String, strSheet As String
    Dim strList As String, i As Long, rng As Range
    
    strPath = "C:\Temp\"
    strFile = "Book1.xls"
    strSheet = "Лист1"
    strRange = "A1:A12"
    Set rng = Range(strRange)
    
    For i = rng.Row To rng.Rows.Count + rng.Row -  1 
        If strList <> "" Then strList = strList & ","
        strList = strList & ExecuteExcel4Macro("'" & strPath & _
            "[" & strFile & "]" & strSheet & "'!" & rng(i).Address(, , xlR1C1))
    Next i
    
    With ActiveCell.Validation
        .Delete
        .Add xlValidateList, , , strList
    End With
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно ли? Список из другой книги.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]