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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача объекта типа Range по ссылке, Не понимаю одного момента 
V
    Опции темы
ИгнатьевАлексей
Дата 18.6.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дорогие коллеги! Подскажите, плиз, в чем загвоздка? Читал всякое, но самому не разобраться  smile 
Думаю, из листинга вопрос понятен.

Заранее спасибо!



Код

   Sub test222()

       Dim baseRange As Range

       Set baseRange = ThisWorkbook.Worksheets("Сводка").Range("D28")
   
       eeeee (ThisWorkbook.Worksheets("Сводка").Range("D28")) 'работает

       eeeee (baseRange) 'не работает

  End Sub



  Sub eeeee(ByRef gggg As Range)

        MsgBox (gggg)
        
  End Sub




--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Akina
Дата 18.6.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ИгнатьевАлексей @  18.6.2009,  19:27 Найти цитируемый пост)
Подскажите, плиз, в чем загвоздка?

В непонимании сути тобою же написанного.
Скобки.
ThisWorkbook.Worksheets("Сводка").Range("D28"), что с ним не делай, останется Range.
А вот когда ты берёшь baseRange в скобки, выполняется преобразование, вернее взятие Default Property. Для Ravge это Value - и в процедуру eeeee передаётся не Range, а Integer или там String... что и приводит к воплям.
Убери скобки или используй ключевое слово call:
Код

Sub test222()

       Dim baseRange As Range

       Set baseRange = ThisWorkbook.Worksheets("Сводка").Range("D28")
   
       eeeee (ThisWorkbook.Worksheets("Сводка").Range("D28")) ' неправильно, но работает
       eeeee ThisWorkbook.Worksheets("Сводка").Range("D28") ' правильно, работает
       eeeee (baseRange) ' неправильно, не работает
call   eeeee(baseRange) ' правильно, работает
       eeeee baseRange ' правильно, работает

  End Sub



  Sub eeeee(ByRef gggg As Range)

        MsgBox (gggg)
        
  End Sub



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

PM MAIL WWW ICQ Jabber   Вверх
ИгнатьевАлексей
Дата 19.6.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Akina, спасибо за разъяснение! 

Я раньше не заострял на этом внимание, да и в литературе. которой я пользуюсь, это особо не разъясняется.....(оправдываюсь  smile )
Цитата

А вот когда ты берёшь baseRange в скобки, выполняется преобразование, вернее взятие Default Property

-это в корне меняет дело!

Хорошо, что так все чудесно!  smile 




--------------------
Vingrad - FOREVER !!! 

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

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

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

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



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


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

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


 




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


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

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