Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно ли? Список из другой книги. / 18 сообщений из 18, страница 1 из 1
06.10.2006, 12:54:59
    #34037364
lcpd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
Доброе время суток всем.
У меня две книги, одна таблица с данными, другая справочник.
Нужно что бы когда в первой книге пользователь выделяет ячейку, из неё выподал список который храница в другой книге. Пересмотрел все примеры на форуме, похожего не нашел. Помогите плиз. Спасибо.
...
Рейтинг: 0 / 0
06.10.2006, 13:24:23
    #34037489
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
через validation можно только, если список находится на том же листе
...
Рейтинг: 0 / 0
06.10.2006, 14:01:20
    #34037651
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
как уже говорил vbapro
Если справочник расположен на другом листе, то нельзя кажись, а если поместить в одном, то можно через Данные>Проверка
указать "тип данных" список и указать "источник"
...
Рейтинг: 0 / 0
06.10.2006, 14:01:53
    #34037655
lcpd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
vbaproчерез validation можно только, если список находится на том же листе


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


Если справичник расположен в пределах одной книги, можно. Даже на этом форуме гора примеров. НО вопрос именно в том, что две книги.
...
Рейтинг: 0 / 0
06.10.2006, 14:06:52
    #34037684
lcpd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
Вероятно здесь ответа я не найду. Всем спасибо. Вопрос снят.
...
Рейтинг: 0 / 0
06.10.2006, 14:18:48
    #34037748
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
оказывается можно, ммм... тот же самый список, только указываете "Источник строк" значения разделенные через точку-запятую, т.е. создаете макрос, который составляет источник строк для ячеек через этот метод и всё
...
Рейтинг: 0 / 0
06.10.2006, 14:22:40
    #34037769
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
если не поняли то что я предложил скажите я выложу пример
...
Рейтинг: 0 / 0
06.10.2006, 14:33:29
    #34037830
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
orunbekесли не поняли то что я предложил скажите я выложу примервыложи
...
Рейтинг: 0 / 0
06.10.2006, 14:44:18
    #34037890
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
Была такая тема , но никто еще не рискнул попробовать!
...
Рейтинг: 0 / 0
06.10.2006, 14:57:10
    #34037970
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
Ivan33 Была такая тема , но никто еще не рискнул попробовать!
кстати, верное предложение. я что-то делал подобное: на листе был скрытый столбец, в него копировались разные данные с разных листов, в зависимости от результатов анализа. После этого переделывал условие для Validation, где в качестве источника был диапазон в скрытом столбце.
...
Рейтинг: 0 / 0
06.10.2006, 15:02:57
    #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
06.10.2006, 15:05:36
    #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
06.10.2006, 15:13:55
    #34038061
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
orunbekвроде все нормально, из-за чего источник не формируется не понимаю, но после того как откроешь окно проверки (Данные>Проверка) и ОК, то всё получается... хм... или это глюк Excel?
я с этой проблемой бился несколько дней. решение было такое: разделение значений в списке через запятые и вконце строки пробелы.
...
Рейтинг: 0 / 0
06.10.2006, 23:39:48
    #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
07.10.2006, 20:24:10
    #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
07.10.2006, 22:08:00
    #34039838
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли? Список из другой книги.
orunbekКак всегда из ваших кодов получаю новые знания, ну не зря же у вас MVP по Excel ;-)

:-)
...
Рейтинг: 0 / 0
09.10.2006, 16:29:27
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно ли? Список из другой книги. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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