Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 16:53   #1
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию Объясните почему?

Доброго всем времени суток!

Почему не работает такая конструкция

For Each i In Worksheets("Справочник").Range([F2], Cells(Rows.Count, "F").End(xlUp)).Areas.Item(1)


Я хочу обратиться к диапазону в другом листе не переходя на него, как это сделать? Ведь простое обращение к ячейке работает.
DJTreeno вне форума Ответить с цитированием
Старый 29.11.2012, 17:08   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Каждой cells нужно указать, чьё это.
т.е. типа

Код:
For Each i In Range(Worksheets("Справочник").[F2], Worksheets("Справочник").Cells(Worksheets("Справочник").Rows.Count, "F").End(xlUp)).Areas.Item(1)
С этим Areas.Item(1) не знаю, нужно тестить.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.11.2012, 17:09   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от DJTreeno Посмотреть сообщение
Доброго всем времени суток!

Почему не работает такая конструкция

For Each i In Worksheets("Справочник").Range([F2], Cells(Rows.Count, "F").End(xlUp)).Areas.Item(1)


Я хочу обратиться к диапазону в другом листе не переходя на него, как это сделать? Ведь простое обращение к ячейке работает.
может так:
Код:
For Each i In Worksheets("Справочник").Range(Worksheets("Справочник").[F2], Worksheets("Справочник").Cells(Rows.Count, "F").End(xlUp)).Areas.Item(1)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 29.11.2012, 17:30   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я думаю, что указать, откуда берём количество строк - тоже не лишнее. Т.к. могут быть одновременно открыты файлы разных версий. Но не тестил
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.11.2012, 17:49   #5
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Ой совсем забыл, спасибо что напомнили!!! Я уже так делал
Наверно вот так точнее:
Dim sh as worksheet

Set sh = Sheets("Справочник")

For Each i In sh.Range(sh.[F2], sh.Cells(sh.Rows.Count, "F").End(xlUp)).Areas.Item(1)


Ужас извините, забал в одном месте ставить!

Последний раз редактировалось DJTreeno; 29.11.2012 в 17:56. Причина: ошибся
DJTreeno вне форума Ответить с цитированием
Старый 29.11.2012, 17:59   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно ещё короче:

Код:
With Sheets("Справочник")
For Each i In .Range(.[F2], .Cells(.Rows.Count, "F").End(xlUp)).Areas.Item(1)
'делаем дело
Next
End With
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.11.2012, 18:15   #7
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Спасибо Вам все огромное, я благодаря Вам автоматизировал огромное количество своей рутинной работы!!!

Еще вопрос касающейся темы, а как сделать:

sh1.Columns("I:L").Select
Selection.Copy
sh2.Columns("A:D").Paste

Чет не хочет(((
DJTreeno вне форума Ответить с цитированием
Старый 29.11.2012, 18:23   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Пробуйте
Код:
sh1.Columns("I:L").Copy sh2.Range("A1")
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.11.2012, 18:29   #9
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Спасибо вот так работает:

sh1.Columns("I:L").Copy sh2.Range("A:D")

Писало что области не совпадают

Вы постоянно мне помогаете, что я даже репутацию плюсануть не могу)))
Низкий поклон!!!
DJTreeno вне форума Ответить с цитированием
Старый 29.11.2012, 18:59   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Странно, у меня сработало с A1...
Ну ладно, главное что в итоге сработало. Но странно...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
if не хочет работать, объясните почему! Npwas Помощь студентам 2 13.12.2011 22:22
объясните пожалйуста почему if работает неправильно ImmortalAlexSan Общие вопросы C/C++ 8 11.02.2011 10:33
Объясните почему Ooops Общие вопросы Delphi 0 23.03.2010 20:18
объясните почему рубится последний символ hen Общие вопросы C/C++ 4 07.04.2009 22:01
Почему отличаются результаты (Ассемблерная вставка в С++)? Объясните Vasiliusis Общие вопросы C/C++ 3 13.11.2008 19:17