Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Выбор диапазона

Автор d7d1cd, 04.03.2013, 17:48

« назад - далее »

d7d1cd

Привет всем! У меня при открытии книги выходит окно, в котором есть выпадающий список (ComboBox). Заполнение этого списка происходит с листа книги. Если я делаю загрузку таким образом:
ComboBox1.List = Sheets("Data").Range("A1:A20").Value

то список загружается не зависимо от того, активен лист Data или нет, а если загрузка происходит так:
ComboBox1.List = Sheets("Data").Range(Cells(1, 1), Cells(20, 1)).Value

то для успешной загрузки списка в ComboBox необходимо чтобы лист Data был активен (выбран). Если он не выбран, то ошибка...
Почему так?

kuklp

ЦитироватьComboBox1.List = Sheets("Data").Range(Cells(1, 1), Cells(20, 1)).Value
Почему так?
Потому, что в такой конструкции для каждой ячейки надо явно указывать родительский объект. Попробуйте:
ComboBox1.List = Range(Sheets("Data").Cells(1, 1), Sheets("Data").Cells(20, 1)).Value
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

d7d1cd

Как-то странно. Ведь я указываю родительский объект для Range... Ну да ладно! Спасибо.
А возможно ли заменить конструкцию вида Range("A1:A20") на такую же по действию и такую же короткую, но без букв, то есть, чтобы и строки и столбцы были заданы цифрами?

kuklp

Нет.
Цитата: d7d1cd от 04.03.2013, 21:36
Как-то странно. Ведь я указываю родительский объект для Range...
Но не указываете для cells. А значит Экс будет искать их на АКТИВНОМ листе. А Range указан для другого листа. Экс справедливо ругается. Что тут странного?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

d7d1cd

Теперь понятно  :)
Извините, повторюсь: возможно ли заменить конструкцию вида Range("A1:A20") на такую же по действию и такую же короткую, но без букв, то есть, чтобы и строки и столбцы были заданы цифрами?

kuklp

#5
Нет. Только так:
Range(Sheets("Data").Cells(1, 1), Sheets("Data").Cells(20, 1)) А чем Вас пугает длина? Это ведь пишется только один раз ;)
Конкретно для Вашего случая:
Sheets("Data").Cells(1, 1).resize(20)
Не намного короче.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771