проверка вводимых значений в excel

Программирование на Visual Basic for Applications
Fugitive
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 10.10.2006 (Вт) 14:48

проверка вводимых значений в excel

Сообщение Fugitive » 10.10.2006 (Вт) 14:57

Здравсвтуйте, уважаемые.

С помощью Данные -> Проверка -> Тип данных: список
Можно сделать список выбора.
Подскажите, как указать диапазон для этого списка из другого файла (рабочей книги.) ??

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.10.2006 (Вт) 20:54

Книги? Пожалуй, никак.
Можно добавить скрытый лист, на котором будут отображаться значения из другой книге. Списку в этом скрытом листе присваивают имя (Вставить - Имя - Присвоить), а в проверке данных вводят это имя.
Lasciate ogni speranza, voi ch'entrate.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 11.10.2006 (Ср) 1:11

Два способа:

1) Макрофункции Excel4

Код: Выделить всё
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


2) ADO с преобразованием массива в стринг. Общий вид ADO кода для импорта данных из закрытой книги здесь: http://www.erlandsendata.no/english/ind ... mportwbado
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 11.10.2006 (Ср) 1:17

Не пробовал, но, думаю, что есть как минимум еще два способа с использованием промежуточного ранга:

1) Сводная таблица (PivotTable) с внешними данными

2) Query
Привет,
KL

Fugitive
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 10.10.2006 (Вт) 14:48

Сообщение Fugitive » 25.10.2006 (Ср) 11:57

Спасибо, KL.
Воспользовался первым способом, НО если длина строки около 500 символов, метод Add выдет ошибку Run-time error '1004'. :(
Как-нибудь можно побороть ?

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 25.10.2006 (Ср) 12:42

Fugitive писал(а):Спасибо, KL.
Воспользовался первым способом, НО если длина строки около 500 символов, метод Add выдет ошибку Run-time error '1004'. :(
Как-нибудь можно побороть ?


Боюсь, что тут остается только отказаться от Validation и переходить на ComboBox-ы. Меня удивляет это: "...если длина строки около 500..." - я всегда думал, что ограничение 255.

Либо импортировать весь список в текущую книгу (например на лист скрытый с пом. Sheets("bla-bla-bla").Visible=xlSheetVeryHidden), присваивать ему (списку) имя и уже оттуда привязывать к Validation с пом. формулы.
Привет,
KL


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 57

    TopList