Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать в функцию объект Range, в Excel 
:(
    Опции темы
RockClimber
Дата 22.4.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Пишу такой код:
Код

Sub RemoveSpaces(DataRange As Range)

....

End Sub

Private Sub cbRemoveSpaces_Click()
RemoveSpaces (Selection)
End Sub



Суть действий: пользователь выделяет некоторый диапазон и нажимает кнопку cbRemoveSpaces, после чего из обработчика нажатия кнопки вызывается функция RemoveSpaces, которая делает то, что надо. При запуске выдается ошибка - "Object required". Я конечно могу обращатся к объекту selection прямо в функции RemoveSpaces, но беда в том, что оттуда ссылка на объект selection должна передаваться дальше и т. д. Использование объекта RangeSelection и byRef в описании функции тоже не помогает  smile 
Я могу в принципе не разбивать код на функции и все писать в обработчике нажатия на кнопку или вообще во всех функциях тупо дергать объект selection, но писать код первым способом методологически неверно, а вторым вообще бессмысленно...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Akina
Дата 22.4.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код

8: RemoveSpaces (Selection.Range)
  smile 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bilya
Дата 22.4.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



Делайте переменную уровня модуля или выше:
Код

Private DataRange As Range

Private Sub CommandButton1_Click()
    Set DataRange = Selection
    RemoveSpaces
End Sub

Sub RemoveSpaces()
    MsgBox DataRange.Address(0, 0) ' для наглядности
End Sub

PM MAIL   Вверх
RockClimber
Дата 28.4.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Как решенный не помечаю, пока надо срочно решать немного другие задачи... Через пару недель вернусь к этой теме и опробую...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.