Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получить свойство объекта по его имени, заданному As String - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить свойство объекта по его имени, заданному As String
Получить свойство объекта по его имени, заданному As String
Alex_ST Дата: Четверг, 23.06.2011, 13:22 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Мне нужно считывать и хранить (ну, например, в словаре) набор свойств объекта (например, Range).
Свойств много (с десяток). Не хотелось бы тупо в программе считывать и записывать их по одному.
Удобно было бы пройтись циклом по стринг-массиву с именами требуемых свойств и считать их значения.
Вот, например, функция, возвращающая массив некоторых свойств диапазона:
[vba]
Код
Function GetRngProps(rRng As Range)
     Dim Arr(), iArr
     Arr = Array("Address", "AllowEdit", "Name", "Left", "Width", "Top", "Height")
     With CreateObject("Scripting.Dictionary")
        For Each iArr In Arr
           .Item(iArr) = rRng.iArr 'так не пройдёт, т.к. не верное обращение к объекту: rRng.iArr
        Next iArr
        GetRngProps = .Items
     End With
End Function
[/vba]
точно также не пройдёт и обращение .Item(iArr) = rRng(iArr) , т.к. это не коллекция...

P.S. Range и именно такой набор свойств взят для примера. Объект и свойства могут быть другими.
Тут вопрос именно об альтернативном синтаксисе обращения к объектам. Т.е. не через точку, а через имя свойства.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеМне нужно считывать и хранить (ну, например, в словаре) набор свойств объекта (например, Range).
Свойств много (с десяток). Не хотелось бы тупо в программе считывать и записывать их по одному.
Удобно было бы пройтись циклом по стринг-массиву с именами требуемых свойств и считать их значения.
Вот, например, функция, возвращающая массив некоторых свойств диапазона:
[vba]
Код
Function GetRngProps(rRng As Range)
     Dim Arr(), iArr
     Arr = Array("Address", "AllowEdit", "Name", "Left", "Width", "Top", "Height")
     With CreateObject("Scripting.Dictionary")
        For Each iArr In Arr
           .Item(iArr) = rRng.iArr 'так не пройдёт, т.к. не верное обращение к объекту: rRng.iArr
        Next iArr
        GetRngProps = .Items
     End With
End Function
[/vba]
точно также не пройдёт и обращение .Item(iArr) = rRng(iArr) , т.к. это не коллекция...

P.S. Range и именно такой набор свойств взят для примера. Объект и свойства могут быть другими.
Тут вопрос именно об альтернативном синтаксисе обращения к объектам. Т.е. не через точку, а через имя свойства.

Автор - Alex_ST
Дата добавления - 23.06.2011 в 13:22
KuklP Дата: Четверг, 23.06.2011, 13:45 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Леш, думаю, тебе нужно будет объявлять пользовательский тип как то:
Public Type SPdata
SPfam As String
SPname As String
SPfath As String
SPdate As Date
SPrab As Date
End Type
потом присваивать ему значения, и только потом извлекать их biggrin В общем гемор суппозитории не стоит.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЛеш, думаю, тебе нужно будет объявлять пользовательский тип как то:
Public Type SPdata
SPfam As String
SPname As String
SPfath As String
SPdate As Date
SPrab As Date
End Type
потом присваивать ему значения, и только потом извлекать их biggrin В общем гемор суппозитории не стоит.

Автор - KuklP
Дата добавления - 23.06.2011 в 13:45
Alex_ST Дата: Четверг, 23.06.2011, 14:06 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Спасибо, Серёга.
Обидно. Так красиво было бы свойства объекта Font запоминать... (ну, ты, наверное, понял, откуда мой вопрос всплыл biggrin )
Придётся делать в лоб. Прямым указанием каждого свойства в коде...



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСпасибо, Серёга.
Обидно. Так красиво было бы свойства объекта Font запоминать... (ну, ты, наверное, понял, откуда мой вопрос всплыл biggrin )
Придётся делать в лоб. Прямым указанием каждого свойства в коде...

Автор - Alex_ST
Дата добавления - 23.06.2011 в 14:06
KuklP Дата: Четверг, 23.06.2011, 14:22 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Да не так уж их там и много. А под каждый конкретный случай и того меньше. В массиве это не страшно.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеДа не так уж их там и много. А под каждый конкретный случай и того меньше. В массиве это не страшно.

Автор - KuklP
Дата добавления - 23.06.2011 в 14:22
Alex_ST Дата: Четверг, 23.06.2011, 16:14 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Да, Серёга, ты прав,
Quote (KuklP)
гемор суппозитории не стоит

Сделал тупо в лоб простым считыванием по одному свойству в коде. Примерчик выложил в топике Изменение форматирования при замене непечатаемых знаков



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеДа, Серёга, ты прав,
Quote (KuklP)
гемор суппозитории не стоит

Сделал тупо в лоб простым считыванием по одному свойству в коде. Примерчик выложил в топике Изменение форматирования при замене непечатаемых знаков

Автор - Alex_ST
Дата добавления - 23.06.2011 в 16:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить свойство объекта по его имени, заданному As String
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!