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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2015, 18:24   #1
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию Почему такая конструкция не работает with Workbooks("name.xlsm").ActiveSheet. Selection ?

и как сделать, чтоб блок with обрабатывал только нужную рабочую книгу если открыто много Excel файлов?
RISagitov вне форума Ответить с цитированием
Старый 17.11.2015, 18:30   #2
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Workbooks("name.xlsm").ActiveSheet - нежить.
ActiveSheet может быть только 1, тот, который активный в данный момент.
И расположен он не в той книге, в которой вы желаете, а в той, которая активна в данный момент.
RAN. вне форума Ответить с цитированием
Старый 17.11.2015, 18:44   #3
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

На самом деле ActiveSheet может быть не только в активной книге

Код:
For Each wb In Workbooks
    MsgBox wb.ActiveSheet.Name
Next
A вот Selection, ActiveCell уже нет.
pashulka вне форума Ответить с цитированием
Старый 17.11.2015, 18:52   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

читаем справку:
Application.Selection Property
Returns the selected object in the active window for an Application object.

у ни у одного из листов нет свойства Selection. Selection это свойство приложения
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.11.2015, 09:39   #5
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

может просто вопрос задал не совсем корректно
как вы решаете задачу,
чтоб макрос работал правильно при любом кол-ве открытых рабочих книг

в макросе есть блок with selection
RISagitov вне форума Ответить с цитированием
Старый 18.11.2015, 09:54   #6
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Никак. Точнее, это не зависит от числа открытых книг, поскольку выделение всегда ассоциируется с активным листлм активной книги.
Код:
Workbooks("name.xlsm").Select
Sheets("name").Select
Range(addres).Select
With Selection
Все это-же, но без выделения
Код:
With Workbooks("name.xlsm").Sheets("name").Range(addres)

Последний раз редактировалось RAN.; 18.11.2015 в 09:57.
RAN. вне форума Ответить с цитированием
Старый 18.11.2015, 10:03   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
как вы решаете задачу,
чтоб макрос работал правильно при любом кол-ве открытых рабочих книг
задача решается написанием корректного кода
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.11.2015, 12:26   #8
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

нюанс в том, что блок with selection
находится в процедуре которая срабатывает при и изменении значения ячеек
RISagitov вне форума Ответить с цитированием
Старый 18.11.2015, 12:53   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

нюанс в том, что ни кто не видел Вашего кода и не знает чего Вы пытаетесь добиться (какую задачу решаете)
в этом случае советы будут поступать долго и не точно.

Видите-ли
Одна и та же процедура
Код:
Sub A1info
  msgbox cells(1,1)
End sub
вставленная в МОДУЛЬ ЛИСТА ВСЕГДА покажет содержимое ячейки А1 ЭТОГО ЛИСТА
а
вставленная в программный модуль
покажет содержимое ячейки А1 активного в данный момент листа. ЛЮБОГО ЛИСТА ЛЮБОЙ КНИГИ!!! - главное чтобы он был активным
видите элементарный пример, а результаты отличаются довольно существенно, в случае "посмотреть" - можно даже сказать, что обе процедуры выполняют свою задачу, а если в А1 у Вас курс валюты и Вы перемножите на этот курс показатели в годовом отчет, и не обратите внимания, то результат может быть катастрофическим!!!

поделюсь с Вами одним наблюдением:
интерес сообщества к теме обратно пропорционален количеству "пустых" вопросов в ней
а когда
количество "пустых" вопрос переваливает критическое значение вся тема становиться "пустой"
а когда
у автора количество "пустых" тем переваливает... и дальше по аналогии, понимаете?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 18.11.2015 в 12:56.
IgorGO вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура C#...почему не работает сортировка по "НАЗВАНИЮ АВТО"?? Serg94 C# (си шарп) 13 17.03.2012 02:59
[Pascal] Почему-то не работает программа "Множества" zifanchuck Помощь студентам 1 27.11.2010 22:24
Почему не работает Case txt Like "текст1", "текст2" Oooleg Microsoft Office Excel 2 15.07.2009 10:08
"Модель молекулы в газе" подскажите почему не работает? Тёма(C@$pEr) Помощь студентам 4 03.02.2009 20:28